⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 createsimdialog.java

📁 Contiki is an open source, highly portable, multi-tasking operating system for memory-constrained n
💻 JAVA
字号:
/* * Copyright (c) 2006, Swedish Institute of Computer Science. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. Neither the name of the Institute nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $Id: CreateSimDialog.java,v 1.5 2007/03/22 23:06:26 fros4943 Exp $ */package se.sics.cooja.dialogs;import java.awt.*;import java.awt.event.*;import java.io.File;import java.text.*;import java.util.Vector;import javax.swing.*;import org.apache.log4j.Logger;import se.sics.cooja.*;/** * A dialog for creating and configuring a simulation. * * @author Fredrik Osterlind */public class CreateSimDialog extends JDialog {  private static final long serialVersionUID = 1L;  private static Logger logger = Logger.getLogger(CreateSimDialog.class);    private AddSimEventHandler myEventHandler = new AddSimEventHandler();    private final static int LABEL_WIDTH = 170;  private final static int LABEL_HEIGHT = 15;    private Simulation mySimulation = null;  private GUI myGUI = null;    private CreateSimDialog myDialog;    private JFormattedTextField delayTime, simulationTime, tickTime;  private JTextField title;  private JComboBox radioMediumBox;    private JTextField logFilename;  private JCheckBox logCheckBox;  private JButton cancelButton;    /**   * Shows a dialog for configuring a simulation.   *   * @param parentFrame Parent frame for dialog   * @param simulationToConfigure Simulation to configure   * @return True if simulation configured correctly   */  public static boolean showDialog(Frame parentFrame, Simulation simulationToConfigure) {    final CreateSimDialog myDialog = new CreateSimDialog(parentFrame, simulationToConfigure.getGUI());    myDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);    myDialog.addWindowListener(new WindowListener() {      public void windowDeactivated(WindowEvent e) {      }      public void windowIconified(WindowEvent e) {      }      public void windowDeiconified(WindowEvent e) {      }      public void windowOpened(WindowEvent e) {      }      public void windowClosed(WindowEvent e) {      }      public void windowActivated(WindowEvent e) {      }      public void windowClosing(WindowEvent e) {        myDialog.cancelButton.doClick();      }    });    myDialog.mySimulation = simulationToConfigure;    // Set title    if (simulationToConfigure.getTitle() != null) {      // Title already preset      myDialog.title.setText(simulationToConfigure.getTitle());    } else {      // Suggest title      myDialog.title.setText("[enter simulation title]");    }    // Set delay time    myDialog.delayTime.setValue(new Integer(simulationToConfigure.getDelayTime()));    // Set simulation time    myDialog.simulationTime.setValue(new Integer(simulationToConfigure.getSimulationTime()));    // Set tick time    myDialog.tickTime.setValue(new Integer(simulationToConfigure.getTickTime()));    // Select radio medium    if (simulationToConfigure.getRadioMedium() != null) {      Class<? extends RadioMedium> radioMediumClass =         simulationToConfigure.getRadioMedium().getClass();            String currentDescription = GUI.getDescriptionOf(radioMediumClass);               for (int i=0; i < myDialog.radioMediumBox.getItemCount(); i++) {        String menuDescription = (String) myDialog.radioMediumBox.getItemAt(i);        if (menuDescription.equals(currentDescription)) {          myDialog.radioMediumBox.setSelectedIndex(i);          break;        }      }    }        // Set position and focus of dialog    myDialog.setLocationRelativeTo(parentFrame);    myDialog.title.requestFocus();    myDialog.title.select(0, myDialog.title.getText().length());    // Dispose on escape key    InputMap inputMap = myDialog.getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);    inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false), "dispose");    AbstractAction cancelAction = new AbstractAction(){      public void actionPerformed(ActionEvent e) {        myDialog.cancelButton.doClick();      }    };     myDialog.getRootPane().getActionMap().put("dispose", cancelAction);        myDialog.setVisible(true);        if (myDialog.mySimulation != null) {      // Simulation configured correctly      return true;    }    return false;  }    private CreateSimDialog(Frame frame, GUI gui) {    super(frame, "Create new simulation", true);        myDialog = this;    myGUI = gui;        JPanel mainPane = new JPanel();    mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.Y_AXIS));        JLabel label;    JTextField textField;    JPanel smallPane;    JButton button;    JComboBox comboBox;    JFormattedTextField numberField;    NumberFormat integerFormat = NumberFormat.getIntegerInstance();            // BOTTOM BUTTON PART    JPanel buttonPane = new JPanel();    buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.X_AXIS));    buttonPane.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));        buttonPane.add(Box.createHorizontalGlue());        cancelButton = new JButton("Cancel");    cancelButton.setActionCommand("cancel");    cancelButton.addActionListener(myEventHandler);    buttonPane.add(cancelButton);        button = new JButton("Create");    button.setActionCommand("create");    button.addActionListener(myEventHandler);    buttonPane.add(Box.createRigidArea(new Dimension(10, 0)));    myDialog.rootPane.setDefaultButton(button);    buttonPane.add(button);            // MAIN PART        // Title    smallPane = new JPanel();    smallPane.setAlignmentX(Component.LEFT_ALIGNMENT);    smallPane.setLayout(new BoxLayout(smallPane, BoxLayout.X_AXIS));    label = new JLabel("Simulation title");    label.setPreferredSize(new Dimension(LABEL_WIDTH,LABEL_HEIGHT));        textField = new JTextField();    textField.setText("[no title]");    textField.setColumns(25);    title = textField;        smallPane.add(label);    smallPane.add(Box.createHorizontalStrut(10));    smallPane.add(textField);        mainPane.add(smallPane);    mainPane.add(Box.createRigidArea(new Dimension(0,5)));        // Radio Medium selection    smallPane = new JPanel();    smallPane.setAlignmentX(Component.LEFT_ALIGNMENT);    smallPane.setLayout(new BoxLayout(smallPane, BoxLayout.X_AXIS));    label = new JLabel("Radio Medium");    label.setPreferredSize(new Dimension(LABEL_WIDTH,LABEL_HEIGHT));        Vector<String> radioMediumDescriptions = new Vector<String>();    for (Class<? extends RadioMedium> radioMediumClass: gui.getRegisteredRadioMediums()) {      String description = GUI.getDescriptionOf(radioMediumClass);         radioMediumDescriptions.add(description);    }    comboBox = new JComboBox(radioMediumDescriptions);        comboBox.setSelectedIndex(0);    radioMediumBox = comboBox;    label.setLabelFor(comboBox);        smallPane.add(label);    smallPane.add(Box.createHorizontalStrut(10));    smallPane.add(comboBox);        mainPane.add(smallPane);    mainPane.add(Box.createRigidArea(new Dimension(0,5)));            // Radio Medium Logging selection    smallPane = new JPanel();    smallPane.setAlignmentX(Component.LEFT_ALIGNMENT);    smallPane.setLayout(new BoxLayout(smallPane, BoxLayout.X_AXIS));    logCheckBox = new JCheckBox("Log all radio traffic?");    logCheckBox.setPreferredSize(new Dimension(LABEL_WIDTH,LABEL_HEIGHT));        textField = new JTextField();    textField.setText("[filename]");    textField.setColumns(25);    logFilename = textField;        smallPane.add(logCheckBox);    smallPane.add(Box.createHorizontalStrut(10));    smallPane.add(textField);            mainPane.add(smallPane);    mainPane.add(Box.createRigidArea(new Dimension(0,5)));            // Delay time    smallPane = new JPanel();    smallPane.setAlignmentX(Component.LEFT_ALIGNMENT);    smallPane.setLayout(new BoxLayout(smallPane, BoxLayout.X_AXIS));    label = new JLabel("Delay time (ms)");    label.setPreferredSize(new Dimension(LABEL_WIDTH,LABEL_HEIGHT));        numberField = new JFormattedTextField(integerFormat);    numberField.setValue(new Integer(100));    numberField.setColumns(4);    delayTime = numberField;        smallPane.add(label);    smallPane.add(Box.createHorizontalStrut(150));    smallPane.add(numberField);        mainPane.add(smallPane);    mainPane.add(Box.createRigidArea(new Dimension(0,5)));        // Simulation start time    smallPane = new JPanel();    smallPane.setAlignmentX(Component.LEFT_ALIGNMENT);    smallPane.setLayout(new BoxLayout(smallPane, BoxLayout.X_AXIS));    label = new JLabel("Simulation start time (ms)");    label.setPreferredSize(new Dimension(LABEL_WIDTH,LABEL_HEIGHT));        numberField = new JFormattedTextField(integerFormat);    numberField.setValue(new Integer(0));    numberField.setColumns(4);    simulationTime = numberField;        smallPane.add(label);    smallPane.add(Box.createHorizontalStrut(150));    smallPane.add(numberField);        mainPane.add(smallPane);    mainPane.add(Box.createRigidArea(new Dimension(0,5)));        // Tick time    smallPane = new JPanel();    smallPane.setAlignmentX(Component.LEFT_ALIGNMENT);    smallPane.setLayout(new BoxLayout(smallPane, BoxLayout.X_AXIS));    label = new JLabel("Tick time (ms)");    label.setPreferredSize(new Dimension(LABEL_WIDTH,LABEL_HEIGHT));        numberField = new JFormattedTextField(integerFormat);    numberField.setValue(new Integer(1));    numberField.setColumns(4);    tickTime = numberField;        smallPane.add(label);    smallPane.add(Box.createHorizontalStrut(150));    smallPane.add(numberField);        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 class AddSimEventHandler implements ActionListener {    public void actionPerformed(ActionEvent e) {      if (e.getActionCommand().equals("cancel")) {        mySimulation = null;        dispose();      } else if (e.getActionCommand().equals("create")) {        mySimulation.setDelayTime(((Number) delayTime.getValue()).intValue());        mySimulation.setSimulationTime(((Number) simulationTime.getValue()).intValue());        mySimulation.setTickTime(((Number) tickTime.getValue()).intValue());        mySimulation.setTitle(title.getText());                String currentRadioMediumDescription = (String) radioMediumBox.getSelectedItem();        for (Class<? extends RadioMedium> radioMediumClass: myGUI.getRegisteredRadioMediums()) {          String radioMediumDescription = GUI.getDescriptionOf(radioMediumClass);             if (currentRadioMediumDescription.equals(radioMediumDescription)) {            try {              RadioMedium radioMedium = RadioMedium.generateRadioMedium(radioMediumClass, mySimulation);              mySimulation.setRadioMedium(radioMedium);            } catch (Exception ex) {              logger.fatal("Exception when creating radio medium: " + ex);              mySimulation.setRadioMedium(null);            }            break;          }        }                if (logCheckBox.isSelected()) {          ConnectionLogger connLogger = new ConnectionLogger(new File(logFilename.getText()));          mySimulation.getRadioMedium().setConnectionLogger(connLogger);        }                dispose();      }    }  }  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -