Reputation: 3
Hi I am using JideSoft to implement Dockable Panel. I used https://www.jidesoft.com/products/JIDE_Docking_Framework_Developer_Guide.pdf as reference and developed below program.
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import com.jidesoft.action.DockableBarDockableHolderPanel;
import com.jidesoft.docking.DockContext;
import com.jidesoft.docking.DockableFrame;
import com.jidesoft.docking.DockingManager;
import com.jidesoft.swing.LayoutPersistence;
public class JFrameExample {
private DockableBarDockableHolderPanel holderPanel;
private JFrame frame;
private static final String MY_FRAME = "DockableFrame";
JFrameExample() {
frame = new JFrame("JFrame Example");
buildDockableFrame();
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
JLabel label = new JLabel("JFrame By Example");
JButton button = new JButton();
button.setText("Button");
button.addActionListener(e -> {
if (button.equals(e.getSource())) {
getDockingPanel().getDockingManager().activateFrame(MY_FRAME);
}
});
panel.add(label);
panel.add(button);
frame.add(panel);
frame.setSize(200, 300);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String s[]) {
new JFrameExample();
}
private void buildDockableFrame() {
DockableFrame frame1 = new DockableFrame(MY_FRAME);
frame1.getContentPane().add(new JLabel("Yes I am visible now..."));
frame1.getContext().setInitMode(DockContext.STATE_AUTOHIDE);
frame1.getContext().setInitSide(DockContext.DOCK_SIDE_EAST);
frame1.getContext().setCurrentMode(DockContext.STATE_HIDDEN);
frame1.getContext().setAutohidable(true);
frame1.getContext().setFloatable(false);
frame1.setShowContextMenu(false);
getDockingPanel().getDockingManager().addFrame(frame1);
}
private DockableBarDockableHolderPanel getDockingPanel() {
if (holderPanel == null) {
holderPanel = createDockableHolderPanel();
}
return holderPanel;
}
protected DockableBarDockableHolderPanel createDockableHolderPanel() {
DockableBarDockableHolderPanel dockableBarDockableHolderPanel = createDockableHolderPanelWithDefaultLayout();
initDockableHolderPanelDockingManager(dockableBarDockableHolderPanel.getDockingManager());
return dockableBarDockableHolderPanel;
}
private DockableBarDockableHolderPanel createDockableHolderPanelWithDefaultLayout() {
DockableBarDockableHolderPanel dockableBarDockableHolderPanel = new DockableBarDockableHolderPanel(null);
initDockableHolderPanelLayoutPersistence(dockableBarDockableHolderPanel.getLayoutPersistence());
return dockableBarDockableHolderPanel;
}
private void initDockableHolderPanelDockingManager(DockingManager dockingManager) {
dockingManager.setEasyTabDock(true);
dockingManager.setShowDividerGripper(true);
dockingManager.setInitSplitPriority(DockingManager.SPLIT_SOUTH_NORTH_EAST_WEST);
dockingManager.getAllFrameNames();
dockingManager.setInitDelay(30);
dockingManager.setSteps(1);
dockingManager.setStepDelay(0);
dockingManager.setDoubleClickAction(DockingManager.DOUBLE_CLICK_TO_MAXIMIZE);
}
private void initDockableHolderPanelLayoutPersistence(LayoutPersistence layoutPersistence) {
layoutPersistence.setProfileKey(MY_FRAME);
layoutPersistence.setUseFrameBounds(false);
layoutPersistence.setUseFrameState(false);
}
}
Below is My UI: enter image description here expected result is when i click the button it should open Dockable panel but it is not working in mycase.
I checked but no luck. Help appreciated. .
Upvotes: 0
Views: 41