private void cascata(JInternalFrame jIFrame, JInternalFrame jIFrameAnt) { if (dPane.getAllFrames().length > 0) { if (autoManager) { maxX = dPane.getWidth() - jIFrame.getWidth(); maxY = dPane.getHeight() - jIFrame.getHeight(); minX = 0; minY = 0; } if (jIFrameAnt.getY() < maxY) { y = jIFrameAnt.getY() + distanceXY; } else { y = minY; } if (jIFrameAnt.getX() < maxX) { x = jIFrameAnt.getX() + distanceXY; } else { x = minX; y = minY; } } else { x = minX; y = minY; } }
protected void setUpSRSFrame(URL url, String search) throws IOException { if (BigPane.srsFrame == null) { BigPane.setUpSRSFrame((2 * desktop.getHeight()) / 3, desktop); Border loweredbevel = BorderFactory.createLoweredBevelBorder(); Border raisedbevel = BorderFactory.createRaisedBevelBorder(); Border compound = BorderFactory.createCompoundBorder(raisedbevel, loweredbevel); JTextField statusField = new JTextField(); statusField.setBorder(compound); statusField.setEditable(false); BigPane.srsFrame.getContentPane().add(statusField, BorderLayout.SOUTH); } Annotation edPane = new Annotation(url); JScrollPane jsp = new JScrollPane(edPane); JTabbedPane jtab = (JTabbedPane) BigPane.srsFrame.getContentPane().getComponent(0); jtab.insertTab(search, null, jsp, null, 0); BigPane.srsFrame.setVisible(true); }
public void actionPerformed(ActionEvent e) { JDesktopPane dp = (JDesktopPane) e.getSource(); String key = getName(); if (CLOSE == key || MAXIMIZE == key || MINIMIZE == key || RESTORE == key) { setState(dp, key); } else if (ESCAPE == key) { if (sourceFrame == dp.getSelectedFrame() && focusOwner != null) { focusOwner.requestFocus(); } moving = false; resizing = false; sourceFrame = null; focusOwner = null; } else if (MOVE == key || RESIZE == key) { sourceFrame = dp.getSelectedFrame(); if (sourceFrame == null) { return; } moving = (key == MOVE) ? true : false; resizing = (key == RESIZE) ? true : false; focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); if (!SwingUtilities.isDescendingFrom(focusOwner, sourceFrame)) { focusOwner = null; } sourceFrame.requestFocus(); } else if (LEFT == key || RIGHT == key || UP == key || DOWN == key || SHRINK_RIGHT == key || SHRINK_LEFT == key || SHRINK_UP == key || SHRINK_DOWN == key) { JInternalFrame c = dp.getSelectedFrame(); if (sourceFrame == null || c != sourceFrame || KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner() != sourceFrame) { return; } Insets minOnScreenInsets = UIManager.getInsets("Desktop.minOnScreenInsets"); Dimension size = c.getSize(); Dimension minSize = c.getMinimumSize(); int dpWidth = dp.getWidth(); int dpHeight = dp.getHeight(); int delta; Point loc = c.getLocation(); if (LEFT == key) { if (moving) { c.setLocation( loc.x + size.width - MOVE_RESIZE_INCREMENT < minOnScreenInsets.right ? -size.width + minOnScreenInsets.right : loc.x - MOVE_RESIZE_INCREMENT, loc.y); } else if (resizing) { c.setLocation(loc.x - MOVE_RESIZE_INCREMENT, loc.y); c.setSize(size.width + MOVE_RESIZE_INCREMENT, size.height); } } else if (RIGHT == key) { if (moving) { c.setLocation( loc.x + MOVE_RESIZE_INCREMENT > dpWidth - minOnScreenInsets.left ? dpWidth - minOnScreenInsets.left : loc.x + MOVE_RESIZE_INCREMENT, loc.y); } else if (resizing) { c.setSize(size.width + MOVE_RESIZE_INCREMENT, size.height); } } else if (UP == key) { if (moving) { c.setLocation( loc.x, loc.y + size.height - MOVE_RESIZE_INCREMENT < minOnScreenInsets.bottom ? -size.height + minOnScreenInsets.bottom : loc.y - MOVE_RESIZE_INCREMENT); } else if (resizing) { c.setLocation(loc.x, loc.y - MOVE_RESIZE_INCREMENT); c.setSize(size.width, size.height + MOVE_RESIZE_INCREMENT); } } else if (DOWN == key) { if (moving) { c.setLocation( loc.x, loc.y + MOVE_RESIZE_INCREMENT > dpHeight - minOnScreenInsets.top ? dpHeight - minOnScreenInsets.top : loc.y + MOVE_RESIZE_INCREMENT); } else if (resizing) { c.setSize(size.width, size.height + MOVE_RESIZE_INCREMENT); } } else if (SHRINK_LEFT == key && resizing) { // Make sure we don't resize less than minimum size. if (minSize.width < (size.width - MOVE_RESIZE_INCREMENT)) { delta = MOVE_RESIZE_INCREMENT; } else { delta = size.width - minSize.width; } // Ensure that we keep the internal frame on the desktop. if (loc.x + size.width - delta < minOnScreenInsets.left) { delta = loc.x + size.width - minOnScreenInsets.left; } c.setSize(size.width - delta, size.height); } else if (SHRINK_RIGHT == key && resizing) { // Make sure we don't resize less than minimum size. if (minSize.width < (size.width - MOVE_RESIZE_INCREMENT)) { delta = MOVE_RESIZE_INCREMENT; } else { delta = size.width - minSize.width; } // Ensure that we keep the internal frame on the desktop. if (loc.x + delta > dpWidth - minOnScreenInsets.right) { delta = (dpWidth - minOnScreenInsets.right) - loc.x; } c.setLocation(loc.x + delta, loc.y); c.setSize(size.width - delta, size.height); } else if (SHRINK_UP == key && resizing) { // Make sure we don't resize less than minimum size. if (minSize.height < (size.height - MOVE_RESIZE_INCREMENT)) { delta = MOVE_RESIZE_INCREMENT; } else { delta = size.height - minSize.height; } // Ensure that we keep the internal frame on the desktop. if (loc.y + size.height - delta < minOnScreenInsets.bottom) { delta = loc.y + size.height - minOnScreenInsets.bottom; } c.setSize(size.width, size.height - delta); } else if (SHRINK_DOWN == key && resizing) { // Make sure we don't resize less than minimum size. if (minSize.height < (size.height - MOVE_RESIZE_INCREMENT)) { delta = MOVE_RESIZE_INCREMENT; } else { delta = size.height - minSize.height; } // Ensure that we keep the internal frame on the desktop. if (loc.y + delta > dpHeight - minOnScreenInsets.top) { delta = (dpHeight - minOnScreenInsets.top) - loc.y; } c.setLocation(loc.x, loc.y + delta); c.setSize(size.width, size.height - delta); } } else if (NEXT_FRAME == key || PREVIOUS_FRAME == key) { dp.selectFrame((key == NEXT_FRAME) ? true : false); } else if (NAVIGATE_NEXT == key || NAVIGATE_PREVIOUS == key) { boolean moveForward = true; if (NAVIGATE_PREVIOUS == key) { moveForward = false; } Container cycleRoot = dp.getFocusCycleRootAncestor(); if (cycleRoot != null) { FocusTraversalPolicy policy = cycleRoot.getFocusTraversalPolicy(); if (policy != null && policy instanceof SortingFocusTraversalPolicy) { SortingFocusTraversalPolicy sPolicy = (SortingFocusTraversalPolicy) policy; boolean idc = sPolicy.getImplicitDownCycleTraversal(); try { sPolicy.setImplicitDownCycleTraversal(false); if (moveForward) { KeyboardFocusManager.getCurrentKeyboardFocusManager().focusNextComponent(dp); } else { KeyboardFocusManager.getCurrentKeyboardFocusManager().focusPreviousComponent(dp); } } finally { sPolicy.setImplicitDownCycleTraversal(idc); } } } } }
/** Contains a CyNetworkView. */ protected void createContainer(final CyNetworkView view) { if (networkViewMap.containsKey(view.getNetwork().getIdentifier())) return; // create a new InternalFrame and put the CyNetworkViews Component into // it final JInternalFrame iframe = new JInternalFrame(view.getTitle(), true, true, true, true); iframe.addInternalFrameListener( new InternalFrameAdapter() { public void internalFrameClosing(InternalFrameEvent e) { Cytoscape.destroyNetworkView(view); } }); desktopPane.add(iframe); // code added to support layered canvas for each CyNetworkView if (view instanceof DGraphView) { final InternalFrameComponent internalFrameComp = new InternalFrameComponent(iframe.getLayeredPane(), (DGraphView) view); iframe.getContentPane().add(internalFrameComp); internalFrameComponentMap.put(view.getNetwork().getIdentifier(), internalFrameComp); } else { logger.info("NetworkViewManager.createContainer() - DGraphView not found!"); iframe.getContentPane().add(view.getComponent()); } iframe.pack(); int x = 0; int y = 0; JInternalFrame refFrame = null; JInternalFrame[] allFrames = desktopPane.getAllFrames(); if (allFrames.length > 1) { refFrame = allFrames[0]; } if (refFrame != null) { x = refFrame.getLocation().x + 20; y = refFrame.getLocation().y + 20; } if (x > (desktopPane.getWidth() - MINIMUM_WIN_WIDTH)) { x = desktopPane.getWidth() - MINIMUM_WIN_WIDTH; } if (y > (desktopPane.getHeight() - MINIMUM_WIN_HEIGHT)) { y = desktopPane.getHeight() - MINIMUM_WIN_HEIGHT; } if (x < 0) { x = 0; } if (y < 0) { y = 0; } iframe.setBounds(x, y, 400, 400); // maximize the frame if the specified property is set try { String max = CytoscapeInit.getProperties().getProperty("maximizeViewOnCreate"); if ((max != null) && Boolean.parseBoolean(max)) iframe.setMaximum(true); } catch (PropertyVetoException pve) { logger.warn("Unable to maximize internal frame: " + pve.getMessage()); } iframe.setVisible(true); iframe.addInternalFrameListener(this); iframe.setResizable(true); networkViewMap.put(view.getNetwork().getIdentifier(), iframe); componentMap.put(iframe, view.getNetwork().getIdentifier()); firePropertyChange( CytoscapeDesktop.NETWORK_VIEW_FOCUSED, null, view.getNetwork().getIdentifier()); }
/** * Method to handle hyper link events. * * @param event hyper link event */ public void hyperlinkUpdate(HyperlinkEvent event) { if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { setCursor(cbusy); try { URL url = event.getURL(); int ind1 = event.getDescription().indexOf("["); int ind2 = event.getDescription().lastIndexOf("]"); String search = ""; if (ind1 > -1 && ind2 > -1) search = event.getDescription().substring(ind1 + 1, ind2); else { ind1 = event.getDescription().indexOf("=") + 1; // genedb if (ind1 > -1) search = event.getDescription().substring(ind1); } if (desktop != null) { if (BigPane.srsTabPane.isSelected()) setUpSRSFrame(url, search); if (BigPane.srsWin.isSelected()) { int hgt = (2 * desktop.getHeight()) / 3; Annotation edPane = new Annotation(url); JScrollPane jsp = new JScrollPane(edPane); JInternalFrame jif = new JInternalFrame( "SRS " + search, true, // resizable true, // closable true, // maximizable true); // iconifiable); JMenuBar menuBar = new JMenuBar(); menuBar.add(new CommonMenu(jif)); jif.setJMenuBar(menuBar); jif.getContentPane().add(jsp); jif.setLocation(0, 0); jif.setSize(800, hgt); jif.setVisible(true); desktop.add(jif); } if (BigPane.srsBrowser.isSelected()) BrowserControl.displayURL(event.getDescription()); } else { setPage(url); back.add(url); } } catch (IOException ioe) { String msg = event.getDescription(); if (msg.length() > 50) msg = msg.substring(0, 50) + "...."; JOptionPane.showMessageDialog( this, "Cannot reach URL:\n" + msg, "Cannot Connect", JOptionPane.INFORMATION_MESSAGE); // ioe.printStackTrace(); // ("Can't follow link to " + // event.getURL().toExternalForm() ); } setCursor(cdone); } else if (event.getEventType() == HyperlinkEvent.EventType.ENTERED) { try { JTextField statusField = (JTextField) BigPane.srsFrame.getContentPane().getComponent(1); statusField.setText(event.getDescription()); } catch (Exception exp) { } } else if (event.getEventType() == HyperlinkEvent.EventType.EXITED) { try { JTextField statusField = (JTextField) BigPane.srsFrame.getContentPane().getComponent(1); statusField.setText(""); } catch (Exception exp) { } } }