Changeset 88 for java/main/src/main/java/com/framsticks/gui/Frame.java
- Timestamp:
- 06/30/13 12:48:20 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
java/main/src/main/java/com/framsticks/gui/Frame.java
r85 r88 1 1 package com.framsticks.gui; 2 2 3 import com.framsticks.core.Entity; 3 4 import com.framsticks.core.Instance; 4 5 import com.framsticks.core.Path; … … 6 7 import com.framsticks.gui.view.TreeCellRenderer; 7 8 import com.framsticks.util.dispatching.Dispatcher; 9 import com.framsticks.util.dispatching.JoinableCollection; 8 10 import com.framsticks.util.lang.ScopeEnd; 9 11 import com.framsticks.util.swing.KeyboardModifier; 12 import com.framsticks.util.swing.MenuConstructor; 13 10 14 import org.apache.log4j.Logger; 11 15 … … 28 32 */ 29 33 @SuppressWarnings("serial") 30 public class Frame extends J Frame implementsDispatcher<Frame> {34 public class Frame extends JoinableCollection<Instance> implements Entity, Dispatcher<Frame> { 31 35 32 36 private static final Logger log = Logger.getLogger(Frame.class.getName()); … … 34 38 protected final Browser browser; 35 39 36 protected final Dimension screenDimension = Toolkit.getDefaultToolkit() 37 .getScreenSize(); 38 39 final protected CardLayout cardPanelLayout = new CardLayout(); 40 protected final JPanel cardPanel = new JPanel(); 41 40 protected final Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize(); 41 42 protected CardLayout cardPanelLayout; 43 protected JPanel cardPanel; 44 45 protected final String title; 46 protected JFrame swing; 42 47 protected JScrollPane treeScrollPane; 43 48 protected JTree tree; … … 63 68 protected JMenu helpMenu; 64 69 65 protected final Map<BrowserEndpoint, EndpointAtFrame> endpoints = new HashMap<BrowserEndpoint, EndpointAtFrame>(); 66 protected final Map<Instance, EndpointAtFrame> endpointsByInstance = new HashMap<Instance, EndpointAtFrame>(); 70 protected final Map<Instance, InstanceAtFrame> instancesAtFrames = new HashMap<Instance, InstanceAtFrame>(); 67 71 68 72 public Frame(String title, Browser browser) { 69 super(title); 73 this.title = title; 74 this.browser = browser; 75 } 76 77 public void configure() { 78 swing = new JFrame(title); 79 swing.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 80 swing.addWindowListener(new WindowAdapter() { 81 @Override 82 public void windowClosing(WindowEvent e) { 83 log.info("received closing"); 84 joinableFinish(); 85 } 86 }); 70 87 /** this is done to remove the current value label from above the slider, 71 88 * because it cannot put to work properly with floating-point value sliders, 72 89 * nor it can be removed in normal way through JSlider methods */ 73 90 UIManager.put("Slider.paintValue", false); 74 this.browser = browser;75 91 log.debug("creating " + this); 76 } 77 78 public void configure() { 79 80 Container contentPane = this.getContentPane(); 92 93 statusBar = new JLabel("not connected"); 94 95 Container contentPane = swing.getContentPane(); 81 96 contentPane.setLayout(new BorderLayout()); 82 97 … … 95 110 treePopupMenu.add(new JMenuItem("Refresh")); 96 111 treePopupMenu.add(new JMenuItem("Open in new frame as root")); 97 addNodeActionToTreePopupMenu("Copy path to clipboard", 98 new NodeAction() { 99 @Override 100 public void actionPerformed(TreeNode treeNode) { 101 Path path = treeNode.getInstancePath(); 102 StringSelection selection = new StringSelection(path 103 .toString()); 104 getToolkit().getSystemClipboard().setContents( 105 selection, selection); 106 } 107 }); 112 addNodeActionToTreePopupMenu("Copy path to clipboard", new NodeAction() { 113 @Override 114 public void actionPerformed(TreeNode treeNode) { 115 Path path = treeNode.getInstancePath(); 116 StringSelection selection = new StringSelection(path.toString()); 117 swing.getToolkit().getSystemClipboard().setContents(selection, selection); 118 } 119 }); 108 120 //this.add(createMenuItem("Add to favourites", null)); 109 121 //this.add(createMenuItem("Remove from favourites", null)); … … 171 183 }); 172 184 173 new KeyboardModifier(tree, JComponent.WHEN_FOCUSED) 174 .join(KeyStroke.getKeyStroke('h'), KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0)) 175 .join(KeyStroke.getKeyStroke('j'), KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0)) 176 .join(KeyStroke.getKeyStroke('k'), KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0)) 177 .join(KeyStroke.getKeyStroke('l'), KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0)) 178 ; 185 new KeyboardModifier(tree, JComponent.WHEN_FOCUSED).join(KeyStroke.getKeyStroke('h'), KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0)).join(KeyStroke.getKeyStroke('j'), KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0)).join(KeyStroke.getKeyStroke('k'), KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0)).join(KeyStroke.getKeyStroke('l'), KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0)); 179 186 180 187 tree.setCellRenderer(new TreeCellRenderer()); … … 214 221 leftPanel.setLayout(new BorderLayout()); 215 222 //leftPanel.add(new ViewerTest(), BorderLayout.PAGE_START); 216 // JPanel leftTopPanel = createLeftTopPanel();217 // if (leftTopPanel != null) {218 // leftPanel.add(leftTopPanel, BorderLayout.PAGE_START);219 // }223 // JPanel leftTopPanel = createLeftTopPanel(); 224 // if (leftTopPanel != null) { 225 // leftPanel.add(leftTopPanel, BorderLayout.PAGE_START); 226 // } 220 227 leftPanel.add(treePanel, BorderLayout.CENTER); 221 228 leftPanel.setBackground(Color.WHITE); 222 229 leftPanel.setForeground(Color.WHITE); 223 230 231 cardPanel = new JPanel(); 224 232 cardPanel.setName("card"); 225 233 JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, cardPanel); … … 236 244 mainPanelLayout.show(mainPanel, "browser"); 237 245 246 cardPanelLayout = new CardLayout(); 238 247 cardPanel.setLayout(cardPanelLayout); 239 248 240 this.pack();249 swing.pack(); 241 250 tree.requestFocusInWindow(); 242 251 243 log.debug("frame configured"); 252 log.debug("frame configured: " + this); 253 254 new MenuConstructor(fileMenu).add(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK), new AbstractAction("Close") { 255 @Override 256 public void actionPerformed(ActionEvent actionEvent) { 257 interrupt(); 258 } 259 }); 244 260 245 261 } … … 249 265 } 250 266 251 public void addRootPath( BrowserEndpoint endpoint,Path path) {252 assert isActive(); 253 assert !endpoints.containsKey(endpoint);254 255 EndpointAtFrame e = new EndpointAtFrame(endpoint, this); 256 endpoint.getInstance().addListener(e);257 endpoints.put(endpoint,e);258 endpointsByInstance.put(endpoint.getInstance(), e);267 public void addRootPath(Path path) { 268 assert isActive(); 269 Instance instance = path.getInstance(); 270 assert browser.getInstances().containsValue(instance); 271 272 InstanceAtFrame e = new InstanceAtFrame(instance, this); 273 instance.addListener(e); 274 instancesAtFrames.put(instance, e); 259 275 TreeNode node = new TreeNode(e, path); 260 276 e.rootTreeNode = node; … … 299 315 } 300 316 301 302 317 private void showPopup(MouseEvent e) { 303 318 assert isActive(); … … 314 329 } 315 330 331 /** 332 * @return the swing 333 */ 334 public JFrame getSwing() { 335 return swing; 336 } 337 316 338 public TreeNode getCurrentlyPoppedTreeNode() { 317 339 assert isActive(); 318 340 return currentlyPoppedTreeNode; 319 341 } 320 321 342 322 343 public void clear() { … … 342 363 public void selectTreeNode(final TreeNode treeNode) { 343 364 assert isActive(); 344 /* final Panel panel = treeNode.getOrCreatePanel();345 if (panel == null) {346 347 }348 panel.setCurrentTreeNode(treeNode);349 treeNode.updateData();350 showPanel(panel);*/365 /* final Panel panel = treeNode.getOrCreatePanel(); 366 if (panel == null) { 367 return; 368 } 369 panel.setCurrentTreeNode(treeNode); 370 treeNode.updateData(); 371 showPanel(panel);*/ 351 372 } 352 373 … … 359 380 return null; 360 381 } 361 return (TreeNode) treePath.getLastPathComponent();382 return (TreeNode) treePath.getLastPathComponent(); 362 383 } 363 384 … … 373 394 public void goTo(Path path) { 374 395 assert isActive(); 375 final TreePath treePath = endpointsByInstance.get(path.getInstance()).getTreePath(path, false);396 final TreePath treePath = instancesAtFrames.get(path.getInstance()).getTreePath(path, false); 376 397 log.info("go to path: " + path + "(" + treePath + ")"); 377 398 … … 388 409 } 389 410 390 391 411 public void addNode(TreeNode child, DefaultMutableTreeNode parent) { 392 412 assert isActive(); … … 399 419 @Override 400 420 public String toString() { 401 return getTitle() + "@" + browser.getName(); 402 } 421 return title + "@" + browser.getName(); 422 } 423 424 @Override 425 protected void joinableInterrupt() { 426 assert isActive(); 427 super.joinableInterrupt(); 428 429 invokeLater(new RunAt<Frame>() { 430 @Override 431 public void run() { 432 finish(); 433 } 434 }); 435 } 436 437 @Override 438 protected void joinableFinish() { 439 assert isActive(); 440 log.debug("disposing frame " + this); 441 swing.dispose(); 442 } 443 444 // @Override 445 // public boolean isDone() { 446 // return super.isDone() && !swing.isDisplayable(); 447 // } 448 449 450 @Override 451 public String getName() { 452 return title; 453 } 454 403 455 404 456 }
Note: See TracChangeset
for help on using the changeset viewer.