private void repositionDecorations(Container parent) { DiagramView diagramView = (DiagramView) parent; DesignView designView = diagramView.getDesignView(); Iterator<Pattern> itr = diagramView.getPatterns(); while (itr.hasNext()) { Pattern pattern = itr.next(); Decoration decoration = designView.getDecoration(pattern); if ((decoration == null) || !decoration.hasComponents()) { continue; } double zoom = designView.getCorrectedZoom(); // group components by positioneer HashMap<Positioner, List<Component>> positionerComponents = new HashMap<Positioner, List<Component>>(); ComponentsDescriptor components = decoration.getComponents(); int componentsCount = components.getComponentCount(); for (int i = 0; i < componentsCount; i++) { Component c = components.getComponent(i); Positioner p = components.getPositioner(i); List<Component> list = positionerComponents.get(p); if (list == null) { list = new ArrayList<Component>(componentsCount); positionerComponents.put(p, list); } list.add(c); if (c instanceof ZoomableDecorationComponent) { // apply zoom ((ZoomableDecorationComponent) c).setZoom(zoom); } } // call positioners for each group for (Positioner p : positionerComponents.keySet()) { p.position(pattern, positionerComponents.get(p), zoom); } } }
public void layoutContainer(Container parent) { synchronized (parent.getTreeLock()) { DiagramView diagramView = (DiagramView) parent; DesignView designView = diagramView.getDesignView(); double k = designView.getCorrectedZoom(); FBounds bounds = diagramView.getContentSize(); int offsetX = (int) Math.round((diagramView.getWidth() - bounds.width * k) / 2.0); int offsetY = (int) Math.round((diagramView.getHeight() - bounds.height * k) / 2.0); diagramView.setOffsets(offsetX, offsetY); if (parent.getComponentCount() > 0) { repositionDecorations(parent); } // Component component = parent.getComponent(0); // if (!(component instanceof NavigationTools)) { // return; // } // component.setBounds(0, 0, parent.getWidth(), parent.getHeight()); } }
public Dimension preferredLayoutSize(Container parent) { synchronized (parent.getTreeLock()) { DiagramView diagramView = (DiagramView) parent; DesignView designView = diagramView.getDesignView(); int w = 0; int h = 0; double k = designView.getCorrectedZoom(); FBounds bounds = diagramView.getContentSize(); w = (int) Math.round(k * bounds.width + MARGIN_LEFT + MARGIN_RIGHT); h = (int) Math.round(k * bounds.height + MARGIN_TOP + MARGIN_BOTTOM); if (parent instanceof ProcessView) { // int count = diagramView.getComponentCount(); // for (int i = 0; i < count; i++) { // Component c = diagramView.getComponent(i); // if (c instanceof NavigationTools) { // continue; // } // // w = Math.max(w, c.getX() + c.getWidth() + MARGIN_RIGHT); // h = Math.max(h, c.getY() + c.getHeight() + MARGIN_BOTTOM); // } TriScrollPane scrollPane = designView.getScrollPane(); int leftWidth = scrollPane.getLeftPreferredWidth(); int rightWidth = scrollPane.getRightPreferredWidth(); w += leftWidth + rightWidth; } return new Dimension(w, h); } }