buildermenu.java
来自「tinyos最新版」· Java 代码 · 共 296 行
JAVA
296 行
// $Id: BuilderMenu.java,v 1.1 2004/03/22 02:15:48 scipio Exp $/* tab:4 * "Copyright (c) 2000-2003 The Regents of the University of California. * All rights reserved. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without written agreement is * hereby granted, provided that the above copyright notice, the following * two paragraphs and the author appear in all copies of this software. * * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS." * * Copyright (c) 2002-2003 Intel Corporation * All rights reserved. * * This file is distributed under the terms in the attached INTEL-LICENSE * file. If you do not find these files, copies can be found by writing to * Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, Berkeley, CA, * 94704. Attention: Intel License Inquiry. *//* Authors: Phil Levis <pal@cs.berkeley.edu> * Date: Sep 26 2003 * Desc: Main window for VM builder * *//** * @author Phil Levis <pal@cs.berkeley.edu> */package net.tinyos.script;import java.awt.*;import java.awt.event.*;import java.awt.font.*;import java.io.*;import java.net.*;import java.util.*;import javax.swing.*;import javax.swing.border.*;import javax.swing.filechooser.*;import net.tinyos.message.*;import net.tinyos.packet.*;import net.tinyos.script.tree.*;import net.tinyos.util.*;public class BuilderMenu extends JMenuBar { private JMenu fileMenu; private JMenuItem fileSaveItem; private JMenu fileLoadMenu; private JMenuItem fileLoadTreeItem; private JMenuItem fileLoadDirectoryItem; private JMenuItem fileLoadFileItem; private JMenuItem fileLanguageItem; private JMenuItem fileQuitItem; private JMenu optionMenu; private JCheckBoxMenuItem optionAdvancedItem; private JMenu helpMenu; private VMBuilder builder; public BuilderMenu(VMBuilder builder) { super(); this.builder = builder; MenuListener mListen = new MenuListener(builder); fileMenu = new JMenu("File"); fileSaveItem = new JMenuItem("Save"); fileSaveItem.addActionListener(mListen); fileQuitItem = new JMenuItem("Quit"); fileQuitItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); } }); fileLoadMenu = new JMenu("Load"); fileLoadTreeItem = new JMenuItem("VM Tree"); fileLoadTreeItem.addActionListener(mListen); fileLoadDirectoryItem = new JMenuItem("Directory"); fileLoadDirectoryItem.addActionListener(mListen); fileLoadFileItem = new JMenuItem("File"); fileLoadFileItem.addActionListener(mListen); fileLanguageItem = new JMenuItem("Select Language"); fileLanguageItem.addActionListener(mListen); fileLoadMenu.add(fileLoadTreeItem); fileLoadMenu.add(fileLoadDirectoryItem); fileLoadMenu.add(fileLoadFileItem); fileMenu.add(fileSaveItem); fileMenu.add(fileLoadMenu); fileMenu.addSeparator(); fileMenu.add(fileLanguageItem); fileMenu.addSeparator(); fileMenu.add(fileQuitItem); optionMenu = new JMenu("Options"); optionAdvancedItem = new JCheckBoxMenuItem("Advanced Options"); optionAdvancedItem.addActionListener(new AdvancedListener(optionAdvancedItem, builder)); optionMenu.add(optionAdvancedItem); helpMenu = new JMenu("Help"); Insets i = new Insets(10, 10, 10, 10); fileMenu.setMargin(i); add(fileMenu); add(optionMenu); add(helpMenu); } private class AdvancedListener implements ActionListener { private VMBuilder builder; private JCheckBoxMenuItem item; public AdvancedListener(JCheckBoxMenuItem item, VMBuilder builder) { this.item = item; this.builder = builder; } public void actionPerformed(ActionEvent evt) { builder.showAdvanced(item.getState()); } } private class MenuListener implements ActionListener { private VMBuilder builder; private JFileChooser chooser; private SingleFileFilter singleFilter; private SearchFileFilter searchFilter; private LanguageFileFilter langFilter; private javax.swing.filechooser.FileFilter basicFilter; public MenuListener(VMBuilder builder) { this.builder = builder; this.chooser = new JFileChooser(); this.basicFilter = chooser.getFileFilter(); this.singleFilter = new SingleFileFilter(); this.langFilter = new LanguageFileFilter(); } public void actionPerformed(ActionEvent event) { int rval; File file; String cmd = event.getActionCommand(); if (cmd.equals("Save")) { builder.getDescription(); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); chooser.setFileFilter(basicFilter); rval = chooser.showSaveDialog(builder); if (rval == JFileChooser.APPROVE_OPTION) { file = chooser.getSelectedFile(); try { String name = file.getAbsolutePath() + "/"; System.out.println(name); file = new File(name); file.mkdir(); builder.createFiles(file); } catch (Exception exception) { exception.printStackTrace(); System.err.println("Could not create VM: " + file); } } } else if (cmd.equals("VM Tree")) { chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); chooser.setFileFilter(basicFilter); rval = chooser.showOpenDialog(builder); if (rval == JFileChooser.APPROVE_OPTION) { file = chooser.getSelectedFile(); builder.actOnTree(file); } } else if (cmd.equals("Directory")) { chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); chooser.setFileFilter(basicFilter); rval = chooser.showOpenDialog(builder); if (rval == JFileChooser.APPROVE_OPTION) { file = chooser.getSelectedFile(); builder.actOnDirectory(file); } } else if (cmd.equals("File")) { chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); chooser.setFileFilter(searchFilter); rval = chooser.showOpenDialog(builder); if (rval == JFileChooser.APPROVE_OPTION) { builder.actOnFile(chooser.getSelectedFile()); } } else if (cmd.equals("Select Language")) { chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); chooser.setFileFilter(langFilter); rval = chooser.showOpenDialog(builder); if (rval == JFileChooser.APPROVE_OPTION) { builder.setLanguageFile(chooser.getSelectedFile()); } } builder.repaint(); } } private class SearchFileFilter extends javax.swing.filechooser.FileFilter implements java.io.FileFilter { public boolean accept(File f) { if (f.isDirectory()) { return true; } String name = f.getName(); if (name.endsWith("Context.nc") || (name.startsWith("OP") && name.endsWith(".odf"))) { return true; } return false; } //The description of this filter public String getDescription() { return "Contexts and opcodes"; } } private class SingleFileFilter extends javax.swing.filechooser.FileFilter implements java.io.FileFilter { public boolean accept(File f) { if (f.isDirectory()) { return false; } String name = f.getName(); if (name.endsWith("Context.nc") || (name.startsWith("OP") && name.endsWith(".odf"))) { return true; } return false; } //The description of this filter public String getDescription() { return "Contexts and opcodes"; } } private class LanguageFileFilter extends javax.swing.filechooser.FileFilter implements java.io.FileFilter { public boolean accept(File f) { if (f.isDirectory()) { return true; } String name = f.getName(); if (name.endsWith(".ldf")) { return true; } return false; } //The description of this filter public String getDescription() { return "Language description files"; } } public static void main(String[] args) { JFrame frame = new JFrame(); BuilderMenu menu = new BuilderMenu(null); frame.setJMenuBar(menu); frame.pack(); frame.setVisible(true); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?