gui fixes: allow editing external tools settings, hide advanced tab (not used yet) etc
This commit is contained in:
parent
d26ba2606b
commit
3a2718279b
|
@ -26,7 +26,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $Id: AbstractCompileDialog.java,v 1.3 2009/03/11 13:27:51 fros4943 Exp $
|
* $Id: AbstractCompileDialog.java,v 1.4 2009/03/11 18:18:57 fros4943 Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package se.sics.cooja.dialogs;
|
package se.sics.cooja.dialogs;
|
||||||
|
@ -46,6 +46,8 @@ import org.apache.log4j.Logger;
|
||||||
|
|
||||||
import se.sics.cooja.*;
|
import se.sics.cooja.*;
|
||||||
import se.sics.cooja.dialogs.MessageList;
|
import se.sics.cooja.dialogs.MessageList;
|
||||||
|
import se.sics.cooja.interfaces.MoteID;
|
||||||
|
import se.sics.cooja.interfaces.Position;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract configure mote type dialog used by Contiki-based mote type implementations.
|
* Abstract configure mote type dialog used by Contiki-based mote type implementations.
|
||||||
|
@ -543,6 +545,7 @@ public abstract class AbstractCompileDialog extends JDialog {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SELECTED_FIRMWARE:
|
case SELECTED_FIRMWARE:
|
||||||
|
contikiSource = null;
|
||||||
contikiFirmware = new File(contikiField.getText());
|
contikiFirmware = new File(contikiField.getText());
|
||||||
if (!contikiFirmware.exists()) {
|
if (!contikiFirmware.exists()) {
|
||||||
setDialogState(DialogState.NO_SELECTION);
|
setDialogState(DialogState.NO_SELECTION);
|
||||||
|
@ -583,7 +586,10 @@ public abstract class AbstractCompileDialog extends JDialog {
|
||||||
|
|
||||||
private void addMoteInterfacesTab(JTabbedPane parent) {
|
private void addMoteInterfacesTab(JTabbedPane parent) {
|
||||||
moteIntfBox = Box.createVerticalBox();
|
moteIntfBox = Box.createVerticalBox();
|
||||||
parent.addTab("Mote interfaces", null, new JScrollPane(moteIntfBox), "Mote interfaces");
|
JPanel panel = new JPanel(new BorderLayout());
|
||||||
|
panel.add(BorderLayout.NORTH, new JLabel("COOJA interacts with simulated motes via mote interfaces. You normally do not need to change these settings!"));
|
||||||
|
panel.add(BorderLayout.CENTER, new JScrollPane(moteIntfBox));
|
||||||
|
parent.addTab("Mote interfaces", null, panel, "Mote interfaces");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -649,11 +655,28 @@ public abstract class AbstractCompileDialog extends JDialog {
|
||||||
intfCheckBox.setSelected(selected);
|
intfCheckBox.setSelected(selected);
|
||||||
intfCheckBox.putClientProperty("class", intfClass);
|
intfCheckBox.putClientProperty("class", intfClass);
|
||||||
intfCheckBox.setAlignmentX(Component.LEFT_ALIGNMENT);
|
intfCheckBox.setAlignmentX(Component.LEFT_ALIGNMENT);
|
||||||
|
intfCheckBox.setToolTipText(intfClass.getName());
|
||||||
intfCheckBox.addActionListener(new ActionListener() {
|
intfCheckBox.addActionListener(new ActionListener() {
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
setDialogState(DialogState.AWAITING_COMPILATION);
|
|
||||||
|
if (contikiSource == null &&
|
||||||
|
contikiFirmware != null) {
|
||||||
|
setDialogState(DialogState.SELECTED_FIRMWARE);
|
||||||
|
} else if (contikiSource != null){
|
||||||
|
setDialogState(DialogState.AWAITING_COMPILATION);
|
||||||
|
} else {
|
||||||
|
setDialogState(DialogState.SELECTED_SOURCE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/* Always select position and ID interface */
|
||||||
|
if (intfClass == Position.class ||
|
||||||
|
intfClass == MoteID.class) {
|
||||||
|
intfCheckBox.setEnabled(false);
|
||||||
|
intfCheckBox.setSelected(true);
|
||||||
|
}
|
||||||
|
|
||||||
moteIntfBox.add(intfCheckBox);
|
moteIntfBox.add(intfCheckBox);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,25 +26,32 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $Id: ContikiMoteCompileDialog.java,v 1.1 2009/03/10 21:21:44 fros4943 Exp $
|
* $Id: ContikiMoteCompileDialog.java,v 1.2 2009/03/11 18:18:57 fros4943 Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package se.sics.cooja.dialogs;
|
package se.sics.cooja.dialogs;
|
||||||
|
|
||||||
|
import java.awt.BorderLayout;
|
||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
import java.awt.Container;
|
import java.awt.Container;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import javax.swing.Box;
|
import javax.swing.Box;
|
||||||
|
import javax.swing.JButton;
|
||||||
import javax.swing.JCheckBox;
|
import javax.swing.JCheckBox;
|
||||||
import javax.swing.JComboBox;
|
import javax.swing.JComboBox;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
import javax.swing.JTabbedPane;
|
import javax.swing.JTabbedPane;
|
||||||
import javax.swing.JTable;
|
import javax.swing.JTable;
|
||||||
|
import javax.swing.SwingUtilities;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
import se.sics.cooja.CoreComm;
|
import se.sics.cooja.CoreComm;
|
||||||
|
import se.sics.cooja.GUI;
|
||||||
import se.sics.cooja.MoteInterface;
|
import se.sics.cooja.MoteInterface;
|
||||||
import se.sics.cooja.MoteType;
|
import se.sics.cooja.MoteType;
|
||||||
import se.sics.cooja.ProjectConfig;
|
import se.sics.cooja.ProjectConfig;
|
||||||
|
@ -87,7 +94,7 @@ public class ContikiMoteCompileDialog extends AbstractCompileDialog {
|
||||||
|
|
||||||
/* Add Contiki mote type specifics */
|
/* Add Contiki mote type specifics */
|
||||||
addMoteInterfaceClasses();
|
addMoteInterfaceClasses();
|
||||||
addAdvancedTab(tabbedPane);
|
/* TODO addAdvancedTab(tabbedPane);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canLoadFirmware(File file) {
|
public boolean canLoadFirmware(File file) {
|
||||||
|
@ -244,7 +251,33 @@ public class ContikiMoteCompileDialog extends AbstractCompileDialog {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
parent.addTab("Environment", null, new JScrollPane(table), "Environment variables");
|
JPanel panel = new JPanel(new BorderLayout());
|
||||||
|
JButton button = new JButton("Change environment variables: Open external tools dialog");
|
||||||
|
button.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
/* Show external tools dialog */
|
||||||
|
ExternalToolsDialog.showDialog(GUI.getTopParentContainer());
|
||||||
|
|
||||||
|
/* Update and select environment tab */
|
||||||
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
getDefaultCompileCommands(((ContikiMoteType)moteType).getContikiSourceFile());
|
||||||
|
for (int i=0; i < tabbedPane.getTabCount(); i++) {
|
||||||
|
if (tabbedPane.getTitleAt(i).equals("Environment")) {
|
||||||
|
tabbedPane.setSelectedIndex(i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setDialogState(DialogState.AWAITING_COMPILATION);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
panel.add(BorderLayout.NORTH, button);
|
||||||
|
panel.add(BorderLayout.CENTER, new JScrollPane(table));
|
||||||
|
|
||||||
|
parent.addTab("Environment", null, panel, "Environment variables");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeSettingsToMoteType() {
|
public void writeSettingsToMoteType() {
|
||||||
|
|
Loading…
Reference in a new issue