like /tools/mspsim. This is a very simple modification that affects a very large number of files in Contiki: Cooja, /platform/cooja, Collect-view, Coffe-manager, and Cooja simulation files (.csc). I've gone through Contiki to update all references I could find. Nevertheless, this commit will likely break external dependencies, like saved Cooja simulation files.
158 lines
5.5 KiB
Java
158 lines
5.5 KiB
Java
/*
|
|
* Copyright (c) 2009, 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.
|
|
* 4. 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.
|
|
*
|
|
*/
|
|
|
|
package org.contikios.cooja.dialogs;
|
|
|
|
import java.awt.Dimension;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.KeyEvent;
|
|
import java.beans.PropertyChangeEvent;
|
|
import java.beans.PropertyChangeListener;
|
|
import java.text.NumberFormat;
|
|
|
|
import javax.swing.AbstractAction;
|
|
import javax.swing.Action;
|
|
import javax.swing.BorderFactory;
|
|
import javax.swing.Box;
|
|
import javax.swing.InputMap;
|
|
import javax.swing.JButton;
|
|
import javax.swing.JComponent;
|
|
import javax.swing.JDesktopPane;
|
|
import javax.swing.JDialog;
|
|
import javax.swing.JFormattedTextField;
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JOptionPane;
|
|
import javax.swing.KeyStroke;
|
|
|
|
import org.apache.log4j.Logger;
|
|
|
|
import org.contikios.cooja.Cooja;
|
|
import org.contikios.cooja.SimEventCentral;
|
|
import org.contikios.cooja.Simulation;
|
|
|
|
public class BufferSettings extends JDialog {
|
|
private static final long serialVersionUID = 7086171115472941104L;
|
|
private static Logger logger = Logger.getLogger(BufferSettings.class);
|
|
private final static Dimension LABEL_SIZE = new Dimension(150, 25);
|
|
|
|
private SimEventCentral central;
|
|
|
|
public static void showDialog(JDesktopPane parent, Simulation simulation) {
|
|
if (Cooja.isVisualizedInApplet()) {
|
|
return;
|
|
}
|
|
|
|
BufferSettings dialog = new BufferSettings(simulation);
|
|
dialog.setLocationRelativeTo(parent);
|
|
dialog.setVisible(true);
|
|
}
|
|
|
|
private BufferSettings(Simulation simulation) {
|
|
setTitle("Event buffer settings");
|
|
setResizable(false);
|
|
setModal(true);
|
|
|
|
central = simulation.getEventCentral();
|
|
|
|
/* Escape key */
|
|
InputMap inputMap = getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
|
|
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false), "dispose");
|
|
getRootPane().getActionMap().put("dispose", disposeAction);
|
|
|
|
Box main = Box.createVerticalBox();
|
|
JButton okButton = new JButton(disposeAction);
|
|
getRootPane().setDefaultButton(okButton);
|
|
|
|
JFormattedTextField value = addEntry(main, "Log output messages");
|
|
value.setValue(central.getLogOutputBufferSize());
|
|
value.addPropertyChangeListener("value", new PropertyChangeListener() {
|
|
public void propertyChange(PropertyChangeEvent evt) {
|
|
int newVal = ((Number)evt.getNewValue()).intValue();
|
|
if (newVal < 1) {
|
|
newVal = 1;
|
|
((JFormattedTextField)evt.getSource()).setValue(newVal);
|
|
}
|
|
central.setLogOutputBufferSize(newVal);
|
|
}
|
|
});
|
|
|
|
main.add(Box.createVerticalStrut(10));
|
|
|
|
Box line = Box.createHorizontalBox();
|
|
line.add(Box.createHorizontalGlue());
|
|
line.add(new JButton(setDefaultAction));
|
|
line.add(okButton);
|
|
main.add(line);
|
|
|
|
main.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
|
|
getContentPane().add(main);
|
|
pack();
|
|
}
|
|
|
|
private JFormattedTextField addEntry(JComponent container, String desc) {
|
|
Box box;
|
|
box = Box.createHorizontalBox();
|
|
JLabel label = new JLabel(desc);
|
|
label.setPreferredSize(LABEL_SIZE);
|
|
box.add(label);
|
|
box.add(Box.createHorizontalGlue());
|
|
JFormattedTextField value = new JFormattedTextField(NumberFormat.getIntegerInstance());
|
|
value.setPreferredSize(LABEL_SIZE);
|
|
box.add(value);
|
|
|
|
container.add(box);
|
|
return value;
|
|
}
|
|
|
|
private Action setDefaultAction = new AbstractAction("Set default") {
|
|
public void actionPerformed(ActionEvent e) {
|
|
Object[] options = { "Ok", "Cancel" };
|
|
|
|
String question = "Use current settings as default for future simulations?";
|
|
String title = "Set default?";
|
|
int answer = JOptionPane.showOptionDialog(BufferSettings.this, question, title,
|
|
JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null,
|
|
options, options[0]);
|
|
|
|
if (answer != JOptionPane.YES_OPTION) {
|
|
return;
|
|
}
|
|
|
|
Cooja.setExternalToolsSetting("BUFFERSIZE_LOGOUTPUT", "" + central.getLogOutputBufferSize());
|
|
}
|
|
};
|
|
|
|
private Action disposeAction = new AbstractAction("OK") {
|
|
public void actionPerformed(ActionEvent e) {
|
|
dispose();
|
|
}
|
|
};
|
|
|
|
}
|