📄 addmotedialog.java
字号:
smallPane.add(label); smallPane.add(Box.createHorizontalStrut(10)); label = new JLabel("Y "); smallPane.add(label); smallPane.add(Box.createHorizontalStrut(10)); numberField = new JFormattedTextField(doubleFormat); numberField.setValue(new Double(0.0)); numberField.setColumns(4); numberField.addPropertyChangeListener("value", myEventHandler); startY = numberField; smallPane.add(numberField); smallPane.add(Box.createHorizontalStrut(10)); label = new JLabel("<->"); label.setPreferredSize(new Dimension(LABEL_WIDTH / 4, LABEL_HEIGHT)); smallPane.add(label); numberField = new JFormattedTextField(doubleFormat); numberField.setValue(new Double(100.0)); numberField.setColumns(4); numberField.addPropertyChangeListener("value", myEventHandler); endY = numberField; smallPane.add(numberField); smallPane.add(Box.createHorizontalStrut(10)); mainPane.add(smallPane); mainPane.add(Box.createRigidArea(new Dimension(0, 5))); // Position interval Z smallPane = new JPanel(); smallPane.setAlignmentX(Component.LEFT_ALIGNMENT); smallPane.setLayout(new BoxLayout(smallPane, BoxLayout.X_AXIS)); label = new JLabel(""); label.setPreferredSize(new Dimension(LABEL_WIDTH, LABEL_HEIGHT)); smallPane.add(label); smallPane.add(Box.createHorizontalStrut(10)); label = new JLabel("Z "); smallPane.add(label); smallPane.add(Box.createHorizontalStrut(10)); numberField = new JFormattedTextField(doubleFormat); numberField.setValue(new Double(0.0)); numberField.setColumns(4); numberField.addPropertyChangeListener("value", myEventHandler); startZ = numberField; smallPane.add(numberField); smallPane.add(Box.createHorizontalStrut(10)); label = new JLabel("<->"); label.setPreferredSize(new Dimension(LABEL_WIDTH / 4, LABEL_HEIGHT)); smallPane.add(label); numberField = new JFormattedTextField(doubleFormat); numberField.setValue(new Double(0.0)); numberField.setColumns(4); numberField.addPropertyChangeListener("value", myEventHandler); endZ = numberField; smallPane.add(numberField); smallPane.add(Box.createHorizontalStrut(10)); mainPane.add(smallPane); mainPane.add(Box.createRigidArea(new Dimension(0, 5))); mainPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); Container contentPane = getContentPane(); contentPane.add(mainPane, BorderLayout.NORTH); contentPane.add(buttonPane, BorderLayout.SOUTH); pack(); } private void checkSettings() { // Check settings settingsOK = true; // Check X interval if (((Number) startX.getValue()).doubleValue() > ((Number) endX.getValue()) .doubleValue()) { startX.setBackground(Color.RED); startX.setToolTipText("Malformed interval"); endX.setBackground(Color.RED); endX.setToolTipText("Malformed interval"); settingsOK = false; } else { startX.setBackground(Color.WHITE); startX.setToolTipText(null); endX.setBackground(Color.WHITE); endX.setToolTipText(null); } // Check Y interval if (((Number) startY.getValue()).doubleValue() > ((Number) endY.getValue()) .doubleValue()) { startY.setBackground(Color.RED); startY.setToolTipText("Malformed interval"); endY.setBackground(Color.RED); endY.setToolTipText("Malformed interval"); settingsOK = false; } else { startY.setBackground(Color.WHITE); startY.setToolTipText(null); endY.setBackground(Color.WHITE); endY.setToolTipText(null); } // Check Z interval if (((Number) startZ.getValue()).doubleValue() > ((Number) endZ.getValue()) .doubleValue()) { startZ.setBackground(Color.RED); startZ.setToolTipText("Malformed interval"); endZ.setBackground(Color.RED); endZ.setToolTipText("Malformed interval"); settingsOK = false; } else { startZ.setBackground(Color.WHITE); startZ.setToolTipText(null); endZ.setBackground(Color.WHITE); endZ.setToolTipText(null); } // Check number of new motes if (((Number) numberOfMotesField.getValue()).intValue() < 1) { numberOfMotesField.setBackground(Color.RED); numberOfMotesField.setToolTipText("Must be >= 1"); settingsOK = false; } else { numberOfMotesField.setBackground(Color.WHITE); numberOfMotesField.setToolTipText(null); } addButton.setEnabled(settingsOK); } private class AddMotesEventHandler implements ActionListener, FocusListener, PropertyChangeListener { public void propertyChange(PropertyChangeEvent e) { checkSettings(); } public void focusGained(FocusEvent e) { // NOP } public void focusLost(FocusEvent e) { checkSettings(); } public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("cancel")) { newMotes = null; dispose(); } else if (e.getActionCommand().equals("add")) { newMotes = new Vector<Mote>(); // Create new motes int motesToAdd = ((Number) numberOfMotesField.getValue()).intValue(); while (newMotes.size() < motesToAdd) { Mote newMote = moteType.generateMote(simulation); newMotes.add(newMote); } // Position new motes Class<? extends Positioner> positionerClass = null; for (Class<? extends Positioner> positioner : simulation.getGUI() .getRegisteredPositioners()) { if (GUI.getDescriptionOf(positioner).equals( (String) positionDistributionBox.getSelectedItem())) positionerClass = positioner; } Positioner positioner = Positioner.generateInterface(positionerClass, ((Number) numberOfMotesField.getValue()).intValue(), ((Number) startX.getValue()).doubleValue(), ((Number) endX .getValue()).doubleValue(), ((Number) startY.getValue()) .doubleValue(), ((Number) endY.getValue()).doubleValue(), ((Number) startZ.getValue()).doubleValue(), ((Number) endZ .getValue()).doubleValue()); if (positioner == null) { logger.fatal("Could not create positioner"); dispose(); return; } for (int i = 0; i < newMotes.size(); i++) { Position newPosition = newMotes.get(i).getInterfaces().getPosition(); if (newPosition != null) { double[] newPositionArray = positioner.getNextPosition(); if (newPositionArray.length >= 3) newPosition.setCoordinates(newPositionArray[0], newPositionArray[1], newPositionArray[2]); else if (newPositionArray.length >= 2) newPosition.setCoordinates(newPositionArray[0], newPositionArray[1], 0); else if (newPositionArray.length >= 1) newPosition.setCoordinates(newPositionArray[0], 0, 0); else newPosition.setCoordinates(0, 0, 0); } } // Set unique mote id's for all new motes int nextMoteID = 1; for (int i = 0; i < simulation.getMotesCount(); i++) { MoteID moteID = simulation.getMote(i).getInterfaces() .getMoteID(); if (moteID != null && moteID.getMoteID() >= nextMoteID) nextMoteID = moteID.getMoteID() + 1; } for (int i = 0; i < newMotes.size(); i++) { MoteID moteID = newMotes.get(i).getInterfaces().getMoteID(); if (moteID != null) { moteID.setMoteID(nextMoteID++); } } // IP address new motes Class<? extends IPDistributor> ipDistClass = null; for (Class<? extends IPDistributor> ipDistributor : simulation.getGUI() .getRegisteredIPDistributors()) { if (GUI.getDescriptionOf(ipDistributor).equals( (String) ipDistributionBox.getSelectedItem())) ipDistClass = ipDistributor; } IPDistributor ipDistributor = IPDistributor.generateIPDistributor( ipDistClass, newMotes); if (ipDistributor == null) { logger.fatal("Could not create IP distributor"); dispose(); return; } for (int i = 0; i < newMotes.size(); i++) { String newIPString = ipDistributor.getNextIPAddress(); if (newMotes.get(i).getInterfaces().getIPAddress() != null) newMotes.get(i).getInterfaces().getIPAddress().setIPString( newIPString); } dispose(); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -