@Override protected void initializeSwing() { super.initializeSwing(); JDesktopPane swingDesktop = new JDesktopPane(); setSwingField(swingDesktop); // swingDesktop.setDesktopManager(new MultiSplitDesktopManager()); IMultiSplitStrategy columnSplitStrategy = createMultiSplitStrategy(); MultiSplitLayout layout = new MultiSplitLayout(columnSplitStrategy); swingDesktop.setLayout(layout); swingDesktop.setOpaque(true); // cursor swingDesktop.setCursor(null); // focus root swingDesktop.setFocusCycleRoot(false); swingDesktop.setFocusTraversalPolicy(null); // AWE: this could be integrated in new ui (was forgotton in metal laf) swingDesktop .getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) .put(SwingUtility.createKeystroke("shift ctrl TAB"), "selectPreviousFrame"); // register ctrl-TAB and ctrl-shift-TAB actions according to ui swingDesktop.getActionMap().put("selectNextFrame", new P_SwingTabFrameAction(1)); swingDesktop.getActionMap().put("selectPreviousFrame", new P_SwingTabFrameAction(-1)); // development shortcuts SwingUtility.installDevelopmentShortcuts(getSwingDesktopPane()); }
public MainWindow() { JMenuItem showTextItem, showContentItem, showStatsItem; JMenuItem consoleWinItem, treeWinItem, traceWinItem; // our libgist execution thread opThread = new OpThread(this); Libgist.setBreakHandler(opThread); opThread.start(); cmd = new LibgistCommand(); menuBar = new JMenuBar(); setJMenuBar(menuBar); // create toolbar and console window with text area getContentPane().removeAll(); getContentPane().setLayout(new BorderLayout()); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); // desktop pane + console frame desktop = new JDesktopPane(); desktop.setOpaque(true); desktop.setBackground(Color.lightGray); consoleFrame = new ConsoleWindow(200, desktop); desktop.add(consoleFrame, JLayeredPane.PALETTE_LAYER); // debugging actions for toolbar: // notify opThread of what to do when it hits a breakpoint stepAction = new AbstractAction("Step") { public void actionPerformed(ActionEvent e) { opThread.step(); } }; cancelAction = new AbstractAction("Cancel") { public void actionPerformed(ActionEvent e) { scriptWasCancelled = true; // don't call it after next line! opThread.cancel(); } }; nextAction = new AbstractAction("Next") { public void actionPerformed(ActionEvent e) { opThread.next(); } }; contAction = new AbstractAction("Continue") { public void actionPerformed(ActionEvent e) { opThread.cont(); } }; // opThread is currently executing a script and we want it to stop: // tell libgist directly to suspend execution once opThread is done // with the current operation stopAction = new AbstractAction("Stop") { public void actionPerformed(ActionEvent e) { Libgist.singleStep(); } }; // toolbar JToolBar toolbar = new JToolBar(); toolbar.add(stepAction).setText("Step"); toolbar.add(nextAction).setText("Next"); toolbar.add(contAction).setText("Continue"); toolbar.add(stopAction).setText("Stop"); toolbar.add(cancelAction).setText("Cancel"); panel.add(toolbar, BorderLayout.NORTH); panel.add(desktop, BorderLayout.CENTER); getContentPane().add(panel); createFileMenu(); createOpsMenu(); createDebugMenu(); createTreeStatsMenu(); createAnalysisMenu(); createWindowsMenu(); setGuiState(INITSTATE); // nothing opened yet // addWindowListener(this); // So we do the right thing on window closing. }