osd-contiki/tools/cooja/java/org/contikios/cooja/dialogs/BufferSettings.java
Fredrik Osterlind b5c94910ac Renamed Java packages to match our contiki-os.org domain. Note that this commit does not affect external dependencies
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.
2013-11-20 16:43:27 +01:00

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();
}
};
}