private void changePathName() { String name = _pathName.getText(); OPath path = _pathList.getSelectedValue(); if (name == null || name.trim().length() == 0 || path == null) { JOptionPane.showMessageDialog( this, Bundle.getMessage("changePathName"), Bundle.getMessage("makePath"), JOptionPane.INFORMATION_MESSAGE); return; } String oldName = path.getName(); OPath oldPath = _block.getPathByName(name); if (oldPath != null) { JOptionPane.showMessageDialog( this, Bundle.getMessage("duplicatePathName", name, _block.getDisplayName()), Bundle.getMessage("makePath"), JOptionPane.INFORMATION_MESSAGE); return; } path.setName(name); // Change the path name in the track icons java.util.List<Positionable> list = _parent.getCircuitGroup(); // cannot do remove/add path on the fly due to conncurrent access with Iterator ArrayList<IndicatorTrack> changeGroup = new ArrayList<IndicatorTrack>(); for (int i = 0; i < list.size(); i++) { if (list.get(i) instanceof IndicatorTrack) { IndicatorTrack icon = (IndicatorTrack) list.get(i); ArrayList<String> paths = icon.getPaths(); if (paths != null) { for (int j = 0; j < paths.size(); j++) { if (oldName.equals(paths.get(j))) { changeGroup.add(icon); } } } } } for (int i = 0; i < changeGroup.size(); i++) { IndicatorTrack track = changeGroup.get(i); track.removePath(oldName); track.addPath(name); } _pathChange = false; _pathListModel.dataChange(); }
/** * Construct the array of icons that displays the path * * @param path */ private ArrayList<Positionable> makePathGroup(OPath path) { Portal fromPortal = path.getFromPortal(); Portal toPortal = path.getToPortal(); String name = path.getName(); java.util.List<Positionable> list = _parent.getCircuitGroup(); if (log.isDebugEnabled()) { log.debug("makePathGroup for " + name + " CircuitGroup size= " + list.size()); } ArrayList<Positionable> pathGroup = new ArrayList<Positionable>(); for (int i = 0; i < list.size(); i++) { Positionable pos = list.get(i); if (pos instanceof IndicatorTrack) { ArrayList<String> paths = ((IndicatorTrack) pos).getPaths(); if (paths != null) { for (int j = 0; j < paths.size(); j++) { if (name.equals(paths.get(j))) { ((IndicatorTrack) pos).setControlling(true); pathGroup.add(pos); } } } } else { PortalIcon icon = (PortalIcon) pos; Portal portal = icon.getPortal(); if (portal.equals(fromPortal)) { pathGroup.add(icon); } else if (portal.equals(toPortal)) { pathGroup.add(icon); } } } return pathGroup; }
private void changePathNameInIcons(String name, OPath path) { // add or remove path name from IndicatorTrack icons Iterator<Positionable> iter = _parent.getCircuitGroup().iterator(); while (iter.hasNext()) { Positionable pos = iter.next(); if (_pathGroup.contains(pos)) { if (pos instanceof IndicatorTrack) { ((IndicatorTrack) pos).addPath(name); } } else { if (pos instanceof IndicatorTrack) { ((IndicatorTrack) pos).removePath(name); } else { PortalIcon pi = (PortalIcon) pos; // pi.setStatus(PortalIcon.VISIBLE); Portal p = pi.getPortal(); p.removePath(path); } } } }
private void clearPath() { for (int i = 0; i < _pathGroup.size(); i++) { Positionable pos = _pathGroup.get(i); if (pos instanceof PortalIcon) { ((PortalIcon) pos).setStatus(PortalIcon.VISIBLE); } else { ((IndicatorTrack) pos).removePath(TEST_PATH); } } int state = _block.getState() & ~OBlock.ALLOCATED; _pathGroup = new ArrayList<Positionable>(); _block.pseudoPropertyChange("state", Integer.valueOf(0), Integer.valueOf(state)); }
/** * Sets the path icons for display * * @param pathChanged */ protected void updatePath(boolean pathChanged) { // to avoid ConcurrentModificationException now set data Iterator<Positionable> iter = _pathGroup.iterator(); while (iter.hasNext()) { Positionable pos = iter.next(); if (pos instanceof IndicatorTrack) { ((IndicatorTrack) pos).addPath(TEST_PATH); } else { ((PortalIcon) pos).setStatus(PortalIcon.PATH); } } _pathChange = pathChanged; String name = _pathName.getText(); if (name == null || name.length() == 0) { JOptionPane.showMessageDialog( this, Bundle.getMessage("needPathName"), Bundle.getMessage("makePath"), JOptionPane.INFORMATION_MESSAGE); } else { } }