// the MouseListener events public void mousePressed(MouseEvent evt) { Dimension dim = getSize(); String layerName = (String) dialog.threeDLayerList.getSelectedValue(); Layer selectedLayer = dialog.curTech.findLayer(layerName); GenMath.MutableDouble height = dialog.threeDDistanceMap.get(selectedLayer); int yValue = dim.height - (int) ((height.doubleValue() - lowHeight) / (highHeight - lowHeight) * dim.height + 0.5); if (Math.abs(yValue - evt.getY()) > 5) { int bestDist = dim.height; for (Iterator<Layer> it = dialog.curTech.getLayers(); it.hasNext(); ) { Layer layer = it.next(); if (layer.isPseudoLayer()) continue; height = dialog.threeDDistanceMap.get(layer); yValue = dim.height - (int) ((height.doubleValue() - lowHeight) / (highHeight - lowHeight) * dim.height + 0.5); int dist = Math.abs(yValue - evt.getY()); if (dist < bestDist) { bestDist = dist; selectedLayer = layer; } } dialog.threeDLayerList.setSelectedValue(selectedLayer.getName(), true); dialog.threeDValuesChanged(false); } }
/** * Method called at the start of the dialog. Caches current values and displays them in the 3D * tab. */ @Override public void init() { threeDTechnology.setText("Layer cross section for technology '" + curTech.getTechName() + "'"); threeDLayerModel = new DefaultListModel(); threeDLayerList = new JList(threeDLayerModel); threeDLayerList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); threeDLayerPane.setViewportView(threeDLayerList); threeDLayerList.clearSelection(); threeDLayerList.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent evt) { threeDValuesChanged(false); } }); threeDThicknessMap = new HashMap<Layer, GenMath.MutableDouble>(); threeDDistanceMap = new HashMap<Layer, GenMath.MutableDouble>(); // Sorted by Height to be consistent with LayersTab for (Layer layer : curTech.getLayersSortedByName()) { if (layer.isPseudoLayer()) continue; threeDLayerModel.addElement(layer.getName()); double thickness = getDouble(layer.getThicknessSetting()); double distance = getDouble(layer.getDistanceSetting()); threeDThicknessMap.put(layer, new GenMath.MutableDouble(thickness)); threeDDistanceMap.put(layer, new GenMath.MutableDouble(distance)); } threeDLayerList.setSelectedIndex(0); threeDHeight.getDocument().addDocumentListener(new ThreeDInfoDocumentListener(this)); threeDThickness.getDocument().addDocumentListener(new ThreeDInfoDocumentListener(this)); threeDSideView = new ThreeDSideView(this); threeDSideView.setMinimumSize(new java.awt.Dimension(200, 450)); threeDSideView.setPreferredSize(new java.awt.Dimension(200, 450)); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 2; gbc.gridy = 1; gbc.gridwidth = 2; gbc.gridheight = 4; gbc.weightx = 0.5; gbc.weighty = 1.0; gbc.fill = GridBagConstraints.BOTH; gbc.insets = new java.awt.Insets(4, 4, 4, 4); threeD.add(threeDSideView, gbc); threeDValuesChanged(false); }
public void removeUpdate(DocumentEvent e) { dialog.threeDValuesChanged(true); }
public void insertUpdate(DocumentEvent e) { dialog.threeDValuesChanged(true); }