|
@@ -11,9 +11,7 @@ import javax.swing.JComponent;
|
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JLabel;
|
|
|
import javax.swing.JOptionPane;
|
|
import javax.swing.JOptionPane;
|
|
|
import javax.swing.JPanel;
|
|
import javax.swing.JPanel;
|
|
|
-import javax.swing.JScrollPane;
|
|
|
|
|
import javax.swing.JSplitPane;
|
|
import javax.swing.JSplitPane;
|
|
|
-import javax.swing.JTabbedPane;
|
|
|
|
|
import javax.swing.JTextField;
|
|
import javax.swing.JTextField;
|
|
|
import javax.swing.KeyStroke;
|
|
import javax.swing.KeyStroke;
|
|
|
import javax.swing.SwingConstants;
|
|
import javax.swing.SwingConstants;
|
|
@@ -59,7 +57,8 @@ public class VisualUiEditorPanel extends JPanel {
|
|
|
private final Container sourceContainer;
|
|
private final Container sourceContainer;
|
|
|
private final Map<String, Component> sourceComponents = new HashMap<String, Component>();
|
|
private final Map<String, Component> sourceComponents = new HashMap<String, Component>();
|
|
|
private final JPanel canvas;
|
|
private final JPanel canvas;
|
|
|
- private final JPanel previewCanvas;
|
|
|
|
|
|
|
+ private JSplitPane sideContent;
|
|
|
|
|
+ private JButton sideToggleButton;
|
|
|
private final JLabel statusLabel;
|
|
private final JLabel statusLabel;
|
|
|
private final Deque<String> undoStack = new ArrayDeque<String>();
|
|
private final Deque<String> undoStack = new ArrayDeque<String>();
|
|
|
private final Deque<String> redoStack = new ArrayDeque<String>();
|
|
private final Deque<String> redoStack = new ArrayDeque<String>();
|
|
@@ -90,19 +89,14 @@ public class VisualUiEditorPanel extends JPanel {
|
|
|
JPanel palette = createPalette();
|
|
JPanel palette = createPalette();
|
|
|
JPanel inspector = createInspector();
|
|
JPanel inspector = createInspector();
|
|
|
this.canvas = createCanvas();
|
|
this.canvas = createCanvas();
|
|
|
- this.previewCanvas = createPreviewCanvas();
|
|
|
|
|
|
|
+ this.sideContent = new JSplitPane(JSplitPane.VERTICAL_SPLIT, palette, inspector);
|
|
|
|
|
+ this.sideToggleButton = new JButton("<");
|
|
|
this.statusLabel = new JLabel("Ready");
|
|
this.statusLabel = new JLabel("Ready");
|
|
|
|
|
|
|
|
- JTabbedPane centerTabs = new JTabbedPane();
|
|
|
|
|
- centerTabs.addTab("Design", new JScrollPane(canvas));
|
|
|
|
|
- centerTabs.addTab("Preview", new JScrollPane(previewCanvas));
|
|
|
|
|
|
|
+ sideContent.setResizeWeight(0.35);
|
|
|
|
|
+ sideContent.setPreferredSize(new Dimension(250, 500));
|
|
|
|
|
|
|
|
- JSplitPane rightSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, palette, inspector);
|
|
|
|
|
- rightSplit.setResizeWeight(0.35);
|
|
|
|
|
- rightSplit.setPreferredSize(new Dimension(250, 500));
|
|
|
|
|
-
|
|
|
|
|
- add(centerTabs, BorderLayout.CENTER);
|
|
|
|
|
- add(rightSplit, BorderLayout.EAST);
|
|
|
|
|
|
|
+ add(canvas, BorderLayout.CENTER);
|
|
|
add(statusLabel, BorderLayout.SOUTH);
|
|
add(statusLabel, BorderLayout.SOUTH);
|
|
|
|
|
|
|
|
installShortcuts();
|
|
installShortcuts();
|
|
@@ -145,6 +139,42 @@ public class VisualUiEditorPanel extends JPanel {
|
|
|
panel.add(button);
|
|
panel.add(button);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ public JPanel createExternalToolPanel() {
|
|
|
|
|
+ final JPanel panel = new JPanel(new BorderLayout());
|
|
|
|
|
+ sideToggleButton.setFocusable(false);
|
|
|
|
|
+ sideToggleButton.setPreferredSize(new Dimension(28, 40));
|
|
|
|
|
+ sideToggleButton.setToolTipText("Collapse palette");
|
|
|
|
|
+ sideToggleButton.addActionListener(new java.awt.event.ActionListener() {
|
|
|
|
|
+ public void actionPerformed(ActionEvent e) {
|
|
|
|
|
+ toggleSideBar(panel);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ panel.add(sideToggleButton, BorderLayout.WEST);
|
|
|
|
|
+ panel.add(sideContent, BorderLayout.CENTER);
|
|
|
|
|
+ return panel;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void toggleSideBar(JPanel panel) {
|
|
|
|
|
+ boolean expanded = sideContent.getParent() == panel;
|
|
|
|
|
+ if (expanded) {
|
|
|
|
|
+ panel.remove(sideContent);
|
|
|
|
|
+ sideToggleButton.setText(">");
|
|
|
|
|
+ sideToggleButton.setToolTipText("Expand palette");
|
|
|
|
|
+ panel.setPreferredSize(new Dimension(30, 500));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ panel.add(sideContent, BorderLayout.CENTER);
|
|
|
|
|
+ sideToggleButton.setText("<");
|
|
|
|
|
+ sideToggleButton.setToolTipText("Collapse palette");
|
|
|
|
|
+ panel.setPreferredSize(null);
|
|
|
|
|
+ }
|
|
|
|
|
+ panel.revalidate();
|
|
|
|
|
+ panel.repaint();
|
|
|
|
|
+ java.awt.Window window = SwingUtilities.getWindowAncestor(panel);
|
|
|
|
|
+ if (window != null) {
|
|
|
|
|
+ window.pack();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private JPanel createInspector() {
|
|
private JPanel createInspector() {
|
|
|
JPanel panel = new JPanel();
|
|
JPanel panel = new JPanel();
|
|
|
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
|
|
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
|
|
@@ -247,14 +277,6 @@ public class VisualUiEditorPanel extends JPanel {
|
|
|
return panel;
|
|
return panel;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private JPanel createPreviewCanvas() {
|
|
|
|
|
- JPanel panel = new JPanel(null);
|
|
|
|
|
- panel.setBackground(Color.WHITE);
|
|
|
|
|
- panel.setPreferredSize(new Dimension(CANVAS_WIDTH, CANVAS_HEIGHT));
|
|
|
|
|
- panel.setBorder(BorderFactory.createLineBorder(new Color(180, 190, 200)));
|
|
|
|
|
- return panel;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
private void installShortcuts() {
|
|
private void installShortcuts() {
|
|
|
bindShortcut("save", KeyStroke.getKeyStroke("control S"), new Runnable() {
|
|
bindShortcut("save", KeyStroke.getKeyStroke("control S"), new Runnable() {
|
|
|
public void run() {
|
|
public void run() {
|
|
@@ -588,7 +610,6 @@ public class VisualUiEditorPanel extends JPanel {
|
|
|
|
|
|
|
|
private void renderAll() {
|
|
private void renderAll() {
|
|
|
renderCanvas(canvas, true);
|
|
renderCanvas(canvas, true);
|
|
|
- renderCanvas(previewCanvas, false);
|
|
|
|
|
updateInspector();
|
|
updateInspector();
|
|
|
updateStatus(null);
|
|
updateStatus(null);
|
|
|
}
|
|
}
|