Browse Source

Tidying GUI code.

git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@10408 bbc10eb1-c90d-0410-af57-cb519fbb1720
master
Dave Parker 11 years ago
parent
commit
91d83d245b
  1. 85
      prism/src/userinterface/GUIPlugin.java
  2. 49
      prism/src/userinterface/log/GUILog.java
  3. 98
      prism/src/userinterface/model/GUIMultiModel.java
  4. 2
      prism/src/userinterface/model/GUIMultiModelHandler.java
  5. 48
      prism/src/userinterface/model/GUITextModelEditor.java
  6. 214
      prism/src/userinterface/properties/GUIGraphHandler.java
  7. 58
      prism/src/userinterface/properties/GUIMultiProperties.java
  8. 10
      prism/src/userinterface/simulator/GUISimulator.java
  9. 70
      prism/src/userinterface/simulator/networking/GUINetworkEditor.java
  10. 95
      prism/src/userinterface/util/GUIPrismFileFilter.java

85
prism/src/userinterface/GUIPlugin.java

@ -27,11 +27,26 @@
package userinterface;
import javax.swing.*;
import java.awt.*;
import prism.*;
import java.io.*;
import userinterface.util.*;
import java.awt.Dimension;
import java.io.File;
import java.util.Collection;
import java.util.Collections;
import javax.swing.Action;
import javax.swing.JFileChooser;
import javax.swing.JMenu;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JToolBar;
import javax.swing.filechooser.FileFilter;
import prism.Prism;
import prism.PrismSettingsListener;
import userinterface.util.GUIEvent;
import userinterface.util.GUIEventHandler;
import userinterface.util.GUIEventListener;
import userinterface.util.GUILogEvent;
import userinterface.util.GUIUndoManager;
/** This abstract class should be overridden to implement a component to be plugged
* in to the PRISM GUI. It extends JPanel so that it can be directly added to the
@ -331,36 +346,62 @@ public abstract class GUIPlugin extends JPanel implements GUIEventListener, Pris
return JOptionPane.showOptionDialog(gui, message, title, buttonType, messageType, null, choices, defa);
}
/** A utility method to show a file opening dialog with the given file filter as a
* default.
* @param ffs The list of file filters to be used within the filechooser.
* @param ff The file filter to be used as the default within the filechooser.
/**
* A utility method to show a file opening dialog with a specified file filter
*
* @param fileFilter The file filter to be used within the file chooser.
* @return An integer which is one of the JFileChooser selection constants.
*/
public int showOpenFileDialog(FileFilter fileFilter)
{
return showOpenFileDialog(Collections.singletonList(fileFilter), fileFilter);
}
/**
* A utility method to show a file opening dialog with a selection of file filters and one as the default.
*
* @param fileFilters The file filters to be used within the file chooser.
* @param defaultFilter The file filter to be used as the default within the filechooser.
* @return An integer which is one of the JFileChooser selection constants.
*/
public int showOpenFileDialog(GUIPrismFileFilter ffs[], GUIPrismFileFilter ff)
public int showOpenFileDialog(Collection<FileFilter> fileFilters, FileFilter defaultFilter)
{
JFileChooser choose = gui.getChooser();
choose.resetChoosableFileFilters();
for(int j = 0; j < ffs.length; j++)
choose.addChoosableFileFilter(ffs[j]);
choose.setFileFilter(ff);
for (FileFilter ff : fileFilters) {
choose.addChoosableFileFilter(ff);
}
choose.setFileFilter(defaultFilter);
choose.setSelectedFile(new File(""));
return choose.showOpenDialog(gui);
}
/** A utility method to show a file saving dialog with the given file filter as a
* default.
* @param ffs The list of file filters to be used within the filechooser.
* @param ff The file filter to be used as the default within the filechooser.
/**
* A utility method to show a file saving dialog with a specified file filter
*
* @param fileFilter The file filter to be used within the file chooser.
* @return An integer which is one of the JFileChooser selection constants.
*/
public int showSaveFileDialog(GUIPrismFileFilter ffs[], GUIPrismFileFilter ff)
public int showSaveFileDialog(FileFilter fileFilter)
{
return showSaveFileDialog(Collections.singletonList(fileFilter), fileFilter);
}
/**
* A utility method to show a file saving dialog with a selection of file filters and one as the default.
*
* @param fileFilters The file filters to be used within the file chooser.
* @param defaultFilter The file filter to be used as the default within the filechooser.
* @return An integer which is one of the JFileChooser selection constants.
*/
public int showSaveFileDialog(Collection<FileFilter> fileFilters, FileFilter defaultFilter)
{
JFileChooser choose = gui.getChooser();
choose.resetChoosableFileFilters();
for(int j = 0; j < ffs.length; j++)
choose.addChoosableFileFilter(ffs[j]);
choose.setFileFilter(ff);
for (FileFilter ff : fileFilters) {
choose.addChoosableFileFilter(ff);
}
choose.setFileFilter(defaultFilter);
choose.setSelectedFile(new File(""));
int res = choose.showSaveDialog(gui);
if (res != JFileChooser.APPROVE_OPTION) return res;
@ -371,7 +412,7 @@ public abstract class GUIPlugin extends JPanel implements GUIEventListener, Pris
return JFileChooser.CANCEL_OPTION;
}
// check for file overwrite
if(file.exists()) {
if (file.exists()) {
int selectionNo = JOptionPane.CANCEL_OPTION;
selectionNo = optionPane("File \""+file.getPath()+"\" exists. Overwrite?", "Confirm Overwrite", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, null);
if (selectionNo != JOptionPane.OK_OPTION) return JFileChooser.CANCEL_OPTION;

49
prism/src/userinterface/log/GUILog.java

@ -27,15 +27,38 @@
package userinterface.log;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JFileChooser;
import javax.swing.JMenu;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTextArea;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import userinterface.*;
import prism.PrismLog;
import userinterface.util.*;
import prism.*;
import prism.PrismSettings;
import prism.PrismSettingsListener;
import userinterface.GUIClipboardEvent;
import userinterface.GUIPlugin;
import userinterface.GUIPrism;
import userinterface.OptionsPanel;
import userinterface.util.GUIEvent;
import userinterface.util.GUILogEvent;
@SuppressWarnings("serial")
public class GUILog extends GUIPlugin implements MouseListener, PrismSettingsListener
@ -44,9 +67,7 @@ public class GUILog extends GUIPlugin implements MouseListener, PrismSettingsLis
private JTextArea text;
private JPopupMenu popupMenu;
private JMenu logMenu;
//private GUILogOptions options;
private GUIPrismFileFilter textFilter[];
private FileFilter logFilter;
private Action clearAction, saveAction;
/** Creates a new instance of GUILog */
@ -200,8 +221,7 @@ public class GUILog extends GUIPlugin implements MouseListener, PrismSettingsLis
{
public void actionPerformed(ActionEvent e)
{
if (showSaveFileDialog(textFilter, textFilter[0]) == JFileChooser.APPROVE_OPTION)
{
if (showSaveFileDialog(logFilter) == JFileChooser.APPROVE_OPTION) {
File file = getChooserFile();
// do save...
try
@ -233,15 +253,12 @@ public class GUILog extends GUIPlugin implements MouseListener, PrismSettingsLis
popupMenu.add(new JSeparator());
popupMenu.add(GUIPrism.getClipboardPlugin().getSelectAllAction());
logMenu.setMnemonic('L');
logMenu.add(saveAction);
logMenu.add(new JSeparator());
logMenu.add(clearAction);
textFilter = new GUIPrismFileFilter[1];
textFilter[0] = new GUIPrismFileFilter("Plain text files (*.txt)");
textFilter[0].addExtension("txt");
logFilter = new FileNameExtensionFilter("Plain text files (*.txt)", "txt");
}
private void initComponentsAsVisualLog(GUIVisualLogModel log)

98
prism/src/userinterface/model/GUIMultiModel.java

@ -34,6 +34,8 @@ import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import javax.swing.AbstractAction;
import javax.swing.Action;
@ -48,6 +50,8 @@ import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import prism.ModelType;
import prism.Prism;
@ -60,7 +64,6 @@ import userinterface.OptionsPanel;
import userinterface.util.GUIComputationEvent;
import userinterface.util.GUIEvent;
import userinterface.util.GUIExitEvent;
import userinterface.util.GUIPrismFileFilter;
import userinterface.util.GUIUndoManager;
@SuppressWarnings("serial")
@ -85,10 +88,13 @@ public class GUIMultiModel extends GUIPlugin implements PrismSettingsListener
private JPopupMenu popup;
//Contents
private GUIMultiModelHandler handler;
private GUIPrismFileFilter modelFilters[];
private GUIPrismFileFilter textFilter[];
private GUIPrismFileFilter matlabFilter[];
private GUIPrismFileFilter dotFilter[];
private Map<String,FileFilter> modelFilters;
private Map<String,FileFilter> staFilters;
private Map<String,FileFilter> traFilters;
private Map<String,FileFilter> labFilters;
private FileFilter textFilter;
private FileFilter matlabFilter;
private FileFilter dotFilter;
//State
private boolean computing = false;
private boolean initialised = false;
@ -272,15 +278,15 @@ public class GUIMultiModel extends GUIPlugin implements PrismSettingsListener
{
int cont = doModificationCheck();
if (cont == CONTINUE) {
int filterIndex;
String filterName;
switch (handler.getModelMode()) {
case GUIMultiModelHandler.PEPA_MODE:
filterIndex = FILTER_PEPA_MODEL;
filterName = "pepa";
break;
default:
filterIndex = FILTER_PRISM_MODEL;
filterName = "prism";
}
if (showOpenFileDialog(modelFilters, modelFilters[filterIndex]) == JFileChooser.APPROVE_OPTION) {
if (showOpenFileDialog(modelFilters.values(), modelFilters.get(filterName)) == JFileChooser.APPROVE_OPTION) {
File file = getChooserFile();
if (file == null) {
error("No file selected");
@ -313,16 +319,15 @@ public class GUIMultiModel extends GUIPlugin implements PrismSettingsListener
protected int a_saveModelAs()
{
int mode = handler.getModelMode();
int filterIndex;
switch (mode) {
String filterName;
switch (handler.getModelMode()) {
case GUIMultiModelHandler.PEPA_MODE:
filterIndex = FILTER_PEPA_MODEL;
filterName = "pepa";
break;
default:
filterIndex = FILTER_PRISM_MODEL;
filterName = "prism";
}
if (showSaveFileDialog(modelFilters, modelFilters[filterIndex]) != JFileChooser.APPROVE_OPTION) {
if (showSaveFileDialog(modelFilters.values(), modelFilters.get(filterName)) != JFileChooser.APPROVE_OPTION) {
return CANCEL;
}
// do save
@ -349,24 +354,27 @@ public class GUIMultiModel extends GUIPlugin implements PrismSettingsListener
// pop up dialog to select file
switch (exportType) {
case Prism.EXPORT_DOT:
res = showSaveFileDialog(dotFilter, dotFilter[0]);
res = showSaveFileDialog(dotFilter);
break;
case Prism.EXPORT_DOT_STATES:
res = showSaveFileDialog(dotFilter, dotFilter[0]);
res = showSaveFileDialog(dotFilter);
break;
case Prism.EXPORT_MATLAB:
res = showSaveFileDialog(matlabFilter, matlabFilter[0]);
res = showSaveFileDialog(matlabFilter);
break;
default:
switch (exportEntity) {
case GUIMultiModelHandler.STATES_EXPORT:
res = showSaveFileDialog(textFilter, textFilter[1]);
res = showSaveFileDialog(staFilters.values(), staFilters.get("sta"));
break;
case GUIMultiModelHandler.TRANS_EXPORT:
res = showSaveFileDialog(textFilter, textFilter[2]);
res = showSaveFileDialog(traFilters.values(), traFilters.get("tra"));
break;
case GUIMultiModelHandler.LABELS_EXPORT:
res = showSaveFileDialog(textFilter, textFilter[3]);
res = showSaveFileDialog(labFilters.values(), labFilters.get("lab"));
break;
default:
res = showSaveFileDialog(textFilter, textFilter[0]);
res = showSaveFileDialog(textFilter);
}
break;
}
@ -402,11 +410,11 @@ public class GUIMultiModel extends GUIPlugin implements PrismSettingsListener
int res = JFileChooser.CANCEL_OPTION;
switch (exportType) {
case Prism.EXPORT_MATLAB:
res = showSaveFileDialog(matlabFilter, matlabFilter[0]);
res = showSaveFileDialog(matlabFilter);
break;
case Prism.EXPORT_PLAIN:
default:
res = showSaveFileDialog(textFilter, textFilter[0]);
res = showSaveFileDialog(textFilter);
break;
}
if (res != JFileChooser.APPROVE_OPTION)
@ -435,11 +443,11 @@ public class GUIMultiModel extends GUIPlugin implements PrismSettingsListener
int res = JFileChooser.CANCEL_OPTION;
switch (exportType) {
case Prism.EXPORT_MATLAB:
res = showSaveFileDialog(matlabFilter, matlabFilter[0]);
res = showSaveFileDialog(matlabFilter);
break;
case Prism.EXPORT_PLAIN:
default:
res = showSaveFileDialog(textFilter, textFilter[0]);
res = showSaveFileDialog(textFilter);
break;
}
if (res != JFileChooser.APPROVE_OPTION)
@ -1170,29 +1178,21 @@ public class GUIMultiModel extends GUIPlugin implements PrismSettingsListener
popup.add(viewPrismCode);
}
modelFilters = new GUIPrismFileFilter[2];
modelFilters[FILTER_PRISM_MODEL] = new GUIPrismFileFilter("PRISM models (*.prism, *.pm, *.nm, *.sm)");
modelFilters[FILTER_PRISM_MODEL].addExtension("prism");
modelFilters[FILTER_PRISM_MODEL].addExtension("pm");
modelFilters[FILTER_PRISM_MODEL].addExtension("nm");
modelFilters[FILTER_PRISM_MODEL].addExtension("sm");
modelFilters[FILTER_PEPA_MODEL] = new GUIPrismFileFilter("PEPA models (*.pepa)");
modelFilters[FILTER_PEPA_MODEL].addExtension("pepa");
textFilter = new GUIPrismFileFilter[4];
textFilter[0] = new GUIPrismFileFilter("Plain text files (*.txt)");
textFilter[0].addExtension("txt");
textFilter[1] = new GUIPrismFileFilter("State list files (*.sta)");
textFilter[1].addExtension("sta");
textFilter[2] = new GUIPrismFileFilter("Transition matrix files (*.tra)");
textFilter[2].addExtension("tra");
textFilter[3] = new GUIPrismFileFilter("Label files (*.lab)");
textFilter[3].addExtension("lab");
matlabFilter = new GUIPrismFileFilter[1];
matlabFilter[0] = new GUIPrismFileFilter("Matlab files (*.m)");
matlabFilter[0].addExtension("m");
dotFilter = new GUIPrismFileFilter[1];
dotFilter[0] = new GUIPrismFileFilter("Dot files (*.dot)");
dotFilter[0].addExtension("dot");
modelFilters = new HashMap<String,FileFilter>();
modelFilters.put("prism", new FileNameExtensionFilter("PRISM models (*.prism, *.pm, *.nm, *.sm)", "prism", "pm", "nm", "sm"));
modelFilters.put("pepa", new FileNameExtensionFilter("PEPA models (*.pepa)", "pepa"));
staFilters = new HashMap<String,FileFilter>();
staFilters.put("sta", new FileNameExtensionFilter("State list files (*.sta)", "sta"));
staFilters.put("txt", new FileNameExtensionFilter("Plain text files (*.txt)", "txt"));
traFilters = new HashMap<String,FileFilter>();
traFilters.put("tra", new FileNameExtensionFilter("Transition matrix files (*.tra)", "tra"));
traFilters.put("txt", new FileNameExtensionFilter("Plain text files (*.txt)", "txt"));
labFilters = new HashMap<String,FileFilter>();
labFilters.put("lab", new FileNameExtensionFilter("Label files (*.lab)", "lab"));
labFilters.put("txt", new FileNameExtensionFilter("Plain text files (*.txt)", "txt"));
textFilter = new FileNameExtensionFilter("Plain text files (*.txt)", "txt");
matlabFilter = new FileNameExtensionFilter("Matlab files (*.m)", "m");
dotFilter = new FileNameExtensionFilter("Dot files (*.dot)", "dot");
setLayout(new BorderLayout());
add(topPanel, BorderLayout.CENTER);

2
prism/src/userinterface/model/GUIMultiModelHandler.java

@ -65,8 +65,6 @@ import userinterface.model.computation.LoadPRISMModelThread;
import userinterface.model.computation.ParseModelThread;
import userinterface.model.pepaModel.GUIPepaModelEditor;
import userinterface.util.GUIUndoManager;
import userinterface.util.PropertyTable;
import userinterface.util.PropertyTableModel;
@SuppressWarnings("serial")
public class GUIMultiModelHandler extends JPanel implements PrismModelListener

48
prism/src/userinterface/model/GUITextModelEditor.java

@ -30,20 +30,47 @@
package userinterface.model;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.text.*;
import javax.swing.undo.CannotRedoException;
import javax.swing.undo.CannotUndoException;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.datatransfer.Clipboard;
import javax.swing.event.*;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ActionMap;
import javax.swing.InputMap;
import javax.swing.JEditorPane;
import javax.swing.JMenu;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.KeyStroke;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultHighlighter;
import javax.swing.text.Element;
import javax.swing.text.PlainDocument;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.undo.CannotRedoException;
import javax.swing.undo.CannotUndoException;
import prism.PrismLangException;
import prism.PrismSettings;
@ -57,6 +84,7 @@ import userinterface.util.GUIUndoManager;
* model files. Currently supports Prism and Pepa models. It also tells
* the GUIPrism, of which it is a member, about modified events.
*/
@SuppressWarnings("serial")
public class GUITextModelEditor extends GUIModelEditor implements DocumentListener, MouseListener
{
private GUIMultiModelHandler handler;

214
prism/src/userinterface/properties/GUIGraphHandler.java

@ -30,27 +30,23 @@ package userinterface.properties;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JTabbedPane;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import prism.PrismException;
import userinterface.GUIPlugin;
@ -59,11 +55,10 @@ import userinterface.graph.GUIImageExportDialog;
import userinterface.graph.Graph;
import userinterface.graph.GraphException;
import userinterface.graph.GraphOptions;
import userinterface.util.GUIPrismFileFilter;
@SuppressWarnings("serial")
public class GUIGraphHandler extends JPanel implements MouseListener
{
private boolean canDelete;
private JTabbedPane theTabs;
@ -78,15 +73,11 @@ public class GUIGraphHandler extends JPanel implements MouseListener
private Action printGraph, deleteGraph;
private Action exportImageJPG, exportImagePNG, exportImageEPS, exportXML, exportMatlab;
private Action exportOpenDocumentChart, exportOpenDocumentSpreadsheet;
private Action exportCSV, exportGNUPlot, importXML;
private Action importXML;
private JMenu zoomMenu, exportMenu, importMenu;
private GUIPrismFileFilter imagesFilter[], xmlFilter[], matlabFilter[], OpenDocumentChartFilter[], OpenDocumentSpreadsheetFilter[], CSVFilter[],
GNUFilter[], DATFilter[];
private PrintRequestAttributeSet attributes;
private FileFilter pngFilter, jpgFilter, epsFilter, graFilter, matlabFilter;
public GUIGraphHandler(JFrame parent, GUIPlugin plug, boolean canDelete)
{
@ -98,43 +89,11 @@ public class GUIGraphHandler extends JPanel implements MouseListener
initComponents();
imagesFilter = new GUIPrismFileFilter[3];
imagesFilter[0] = new GUIPrismFileFilter("PNG files (*.png)");
imagesFilter[0].addExtension("png");
imagesFilter[1] = new GUIPrismFileFilter("JPEG files (*.jpg, *.jpeg)");
imagesFilter[1].addExtension("jpg");
imagesFilter[2] = new GUIPrismFileFilter("Encapsulated PostScript files (*.eps)");
imagesFilter[2].addExtension("eps");
xmlFilter = new GUIPrismFileFilter[1];
xmlFilter[0] = new GUIPrismFileFilter("PRISM graph files (*.gra)");
xmlFilter[0].addExtension("gra");
matlabFilter = new GUIPrismFileFilter[1];
matlabFilter[0] = new GUIPrismFileFilter("Matlab files (*.m)");
matlabFilter[0].addExtension("m");
OpenDocumentChartFilter = new GUIPrismFileFilter[1];
OpenDocumentChartFilter[0] = new GUIPrismFileFilter("OpenDocument Chart files (*.odc)");
OpenDocumentChartFilter[0].addExtension("odc");
OpenDocumentSpreadsheetFilter = new GUIPrismFileFilter[1];
OpenDocumentSpreadsheetFilter[0] = new GUIPrismFileFilter("OpenDocument Spreadsheet files (*.ods)");
OpenDocumentSpreadsheetFilter[0].addExtension("ods");
CSVFilter = new GUIPrismFileFilter[1];
CSVFilter[0] = new GUIPrismFileFilter("CSV files (*.csv)");
CSVFilter[0].addExtension("csv");
GNUFilter = new GUIPrismFileFilter[1];
GNUFilter[0] = new GUIPrismFileFilter("GNUPlot files (*.gnu)");
GNUFilter[0].addExtension("gnu");
DATFilter = new GUIPrismFileFilter[1];
DATFilter[0] = new GUIPrismFileFilter("GNUPlot data files (*.dat)");
DATFilter[0].addExtension("dat");
attributes = new HashPrintRequestAttributeSet();
pngFilter = new FileNameExtensionFilter("PNG files (*.png)", "png");
jpgFilter = new FileNameExtensionFilter("JPEG files (*.jpg, *.jpeg)", "jpg", "jpeg");
epsFilter = new FileNameExtensionFilter("Encapsulated PostScript files (*.eps)", "eps");
graFilter = new FileNameExtensionFilter("PRISM graph files (*.gra, *.xml)", "gra", "xml");
matlabFilter = new FileNameExtensionFilter("Matlab files (*.m)", "m");
models = new ArrayList<Graph>();
options = new ArrayList<GraphOptions>();
@ -147,26 +106,7 @@ public class GUIGraphHandler extends JPanel implements MouseListener
setLayout(new BorderLayout());
add(theTabs, BorderLayout.CENTER);
/*
importXMLBack = new AbstractAction()
{
public void actionPerformed(ActionEvent e)
{
if (plug.showOpenFileDialog(xmlFilter, xmlFilter[0]) != JFileChooser.APPROVE_OPTION)
return;
try {
Graph mgm = Graph.load(plug.getChooserFile());
addGraph(mgm);
} catch(ChartException ex) {
plug.error("Could not import PRISM graph file:\n"+ex.getMessage());
}
}
};
importXMLBack.putValue(Action.NAME, "Import PRISM graph");
importXMLBack.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_I));
importXMLBack.putValue(Action.SMALL_ICON, GUIPrism.getIconFromImage("smallImport.png"));
importXMLBack.putValue(Action.LONG_DESCRIPTION, "Imports a saved PRISM graph from a file.");
*/
graphOptions = new AbstractAction()
{
public void actionPerformed(ActionEvent e)
@ -227,7 +167,7 @@ public class GUIGraphHandler extends JPanel implements MouseListener
{
public void actionPerformed(ActionEvent e)
{
if (plug.showOpenFileDialog(xmlFilter, xmlFilter[0]) != JFileChooser.APPROVE_OPTION)
if (plug.showOpenFileDialog(graFilter) != JFileChooser.APPROVE_OPTION)
return;
try {
Graph mgm = Graph.load(plug.getChooserFile());
@ -246,7 +186,7 @@ public class GUIGraphHandler extends JPanel implements MouseListener
{
public void actionPerformed(ActionEvent e)
{
if (plug.showSaveFileDialog(xmlFilter, xmlFilter[0]) != JFileChooser.APPROVE_OPTION)
if (plug.showSaveFileDialog(graFilter) != JFileChooser.APPROVE_OPTION)
return;
Graph mgm = models.get(theTabs.getSelectedIndex());
try {
@ -307,7 +247,7 @@ public class GUIGraphHandler extends JPanel implements MouseListener
{
public void actionPerformed(ActionEvent e)
{
if (plug.showSaveFileDialog(matlabFilter, matlabFilter[0]) != JFileChooser.APPROVE_OPTION)
if (plug.showSaveFileDialog(matlabFilter) != JFileChooser.APPROVE_OPTION)
return;
Graph mgm = models.get(theTabs.getSelectedIndex());
@ -323,95 +263,6 @@ public class GUIGraphHandler extends JPanel implements MouseListener
exportMatlab.putValue(Action.SMALL_ICON, GUIPrism.getIconFromImage("smallFileMatlab.png"));
exportMatlab.putValue(Action.LONG_DESCRIPTION, "Export graph as a Matlab file.");
exportOpenDocumentChart = new AbstractAction()
{
public void actionPerformed(ActionEvent e)
{
/* if (plug.showSaveFileDialog(OpenDocumentChartFilter, OpenDocumentChartFilter[0]) != JFileChooser.APPROVE_OPTION)
return;
GraphView mgv = (GraphView)views.get(
theTabs.getSelectedIndex()
);
try {
mgv.doExportToOpenDocumentChart(plug.getChooserFile());
} catch(ChartException ex) {
plug.error("Could not export OpenDocument Chart file:\n" + ex.getMessage());
}*/
}
};
exportOpenDocumentChart.putValue(Action.NAME, "OpenDocument Chart");
exportOpenDocumentChart.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_O));
exportOpenDocumentChart.putValue(Action.SMALL_ICON, GUIPrism.getIconFromImage("smallExport.png"));
exportOpenDocumentChart.putValue(Action.LONG_DESCRIPTION, "Export graph as a OpenDocument Chart file.");
exportOpenDocumentSpreadsheet = new AbstractAction()
{
public void actionPerformed(ActionEvent e)
{
/*if (plug.showSaveFileDialog(OpenDocumentSpreadsheetFilter, OpenDocumentSpreadsheetFilter[0]) != JFileChooser.APPROVE_OPTION)
return;
GraphView mgv = (GraphView)views.get(
theTabs.getSelectedIndex()
);
try {
mgv.doExportToOpenDocumentSpreadsheet(plug.getChooserFile());
} catch(ChartException ex) {
plug.error("Could not export OpenDocument Spreadsheet file:\n" + ex.getMessage());
}*/
}
};
exportOpenDocumentSpreadsheet.putValue(Action.NAME, "OpenDocument Spreadsheet");
exportOpenDocumentSpreadsheet.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_S));
exportOpenDocumentSpreadsheet.putValue(Action.SMALL_ICON, GUIPrism.getIconFromImage("smallExport.png"));
exportOpenDocumentSpreadsheet.putValue(Action.LONG_DESCRIPTION, "Export graph as a OpenDocument Spreadsheet file.");
exportCSV = new AbstractAction()
{
public void actionPerformed(ActionEvent e)
{
/*if (plug.showSaveFileDialog(CSVFilter, CSVFilter[0]) != JFileChooser.APPROVE_OPTION)
return;
GraphModel mgm = models.get(
theTabs.getSelectedIndex()
);
try {
mgm.exportToCSV(plug.getChooserFile());
} catch(ChartException ex) {
plug.error("Could not export CSV file:\n"+ex.getMessage());
}*/
}
};
exportCSV.putValue(Action.NAME, "CSV file");
exportCSV.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_C));
exportCSV.putValue(Action.SMALL_ICON, GUIPrism.getIconFromImage("smallExport.png"));
exportCSV.putValue(Action.LONG_DESCRIPTION, "Export graph as a CSV file.");
exportGNUPlot = new AbstractAction()
{
public void actionPerformed(ActionEvent e)
{
Graph mgm = models.get(theTabs.getSelectedIndex());
if (plug.showSaveFileDialog(GNUFilter, GNUFilter[0]) != JFileChooser.APPROVE_OPTION)
return;
File file1 = plug.getChooserFile();
if (plug.showSaveFileDialog(DATFilter, DATFilter[0]) != JFileChooser.APPROVE_OPTION)
return;
File file2 = plug.getChooserFile();
/*y {
//mgm.exportToGNUPlot(file1,file2);
} catch(ChartException ex) {
plug.error("Could not export GNU file:\n" + ex.getMessage());
}*/
}
};
exportGNUPlot.putValue(Action.NAME, "GNUPlot file");
exportGNUPlot.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_G));
exportGNUPlot.putValue(Action.SMALL_ICON, GUIPrism.getIconFromImage("smallExport.png"));
exportGNUPlot.putValue(Action.LONG_DESCRIPTION, "Export graph as GNUPlot files.");
printGraph = new AbstractAction()
{
public void actionPerformed(ActionEvent e)
@ -499,9 +350,8 @@ public class GUIGraphHandler extends JPanel implements MouseListener
}
if (imageDialog.getImageType() == GUIImageExportDialog.JPEG) {
if (plug.showSaveFileDialog(imagesFilter, imagesFilter[1]) != JFileChooser.APPROVE_OPTION)
if (plug.showSaveFileDialog(jpgFilter) != JFileChooser.APPROVE_OPTION)
return;
try {
graph.exportToJPEG(plug.getChooserFile(), imageDialog.getExportWidth(), imageDialog.getExportHeight());
} catch (GraphException ex) {
@ -510,9 +360,8 @@ public class GUIGraphHandler extends JPanel implements MouseListener
plug.error("Could not export JPEG file:\n" + ex.getMessage());
}
} else if (imageDialog.getImageType() == GUIImageExportDialog.PNG) {
if (plug.showSaveFileDialog(imagesFilter, imagesFilter[0]) != JFileChooser.APPROVE_OPTION)
if (plug.showSaveFileDialog(pngFilter) != JFileChooser.APPROVE_OPTION)
return;
try {
graph.exportToPNG(plug.getChooserFile(), imageDialog.getExportWidth(), imageDialog.getExportHeight(), imageDialog.getAlpha());
} catch (GraphException ex) {
@ -521,9 +370,8 @@ public class GUIGraphHandler extends JPanel implements MouseListener
plug.error("Could not export PNG file:\n" + ex.getMessage());
}
} else if (imageDialog.getImageType() == GUIImageExportDialog.EPS) {
if (plug.showSaveFileDialog(imagesFilter, imagesFilter[2]) != JFileChooser.APPROVE_OPTION)
if (plug.showSaveFileDialog(epsFilter) != JFileChooser.APPROVE_OPTION)
return;
try {
graph.exportToEPS(plug.getChooserFile(), imageDialog.getExportWidth(), imageDialog.getExportHeight());
} catch (GraphException ex) {
@ -535,34 +383,6 @@ public class GUIGraphHandler extends JPanel implements MouseListener
}
}
/* We can't keep using the same menu because Swing won't allow
* two components on screen with the same reference. Since one
* instance of GUIGraphHandler contains N graphs, it needs N
* import/export menus.
*/
public JMenu getExportMenu()
{
JMenu menu = new JMenu("Import/Export..");
menu.setIcon(GUIPrism.getIconFromImage("Export.png"));
menu.setMnemonic('I');
menu.add(new JLabel("Import"));
menu.add(importXML);
menu.addSeparator();
menu.add(new JLabel("Export"));
menu.add(exportXML);
menu.add(exportImagePNG);
menu.add(exportImageEPS);
menu.add(exportImageJPG);
menu.add(exportMatlab);
menu.add(exportOpenDocumentChart);
menu.add(exportOpenDocumentSpreadsheet);
menu.add(exportCSV);
menu.add(exportGNUPlot);
return menu;
}
public Action getPrintGraph()
{
return printGraph;

58
prism/src/userinterface/properties/GUIMultiProperties.java

@ -54,9 +54,11 @@ import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Comparator;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.AbstractAction;
import javax.swing.Action;
@ -76,12 +78,11 @@ import javax.swing.KeyStroke;
import javax.swing.border.TitledBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import org.jfree.data.xy.XYDataItem;
import param.BigRational;
import param.Function;
import param.RegionValues;
import parser.Values;
import parser.ast.Expression;
import parser.ast.ModulesFile;
@ -117,7 +118,6 @@ import userinterface.simulator.GUISimulator;
import userinterface.util.GUIComputationEvent;
import userinterface.util.GUIEvent;
import userinterface.util.GUIExitEvent;
import userinterface.util.GUIPrismFileFilter;
/**
* Properties tab of the PRISM GUI.
@ -152,10 +152,11 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
private File exportFile = null;
// GUI
private GUIPrismFileFilter propsFilter[];
private GUIPrismFileFilter resultsFilter[];
private GUIPrismFileFilter textFilter[];
private GUIPrismFileFilter matlabFilter[];
private FileFilter propsFilter;
private Map<String,FileFilter> labFilters;
private FileFilter textFilter;
private FileFilter csvFilter;
private FileFilter matlabFilter;
private JMenu propMenu;
private JPopupMenu propertiesPopup, constantsPopup, labelsPopup, experimentPopup;
private GUIExperimentTable experiments;
@ -735,7 +736,7 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
if (doModificationCheck() != CONTINUE)
return;
if (showOpenFileDialog(propsFilter, propsFilter[0]) == JFileChooser.APPROVE_OPTION) {
if (showOpenFileDialog(propsFilter) == JFileChooser.APPROVE_OPTION) {
File file = getChooserFile();
if (file == null) {
error("No file selected");
@ -797,7 +798,7 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
message("Cannot save properties list: some constants are invalid");
return CANCEL;
}
if (showSaveFileDialog(propsFilter, propsFilter[0]) == JFileChooser.APPROVE_OPTION) {
if (showSaveFileDialog(propsFilter) == JFileChooser.APPROVE_OPTION) {
File file = getChooserFile();
// do save
try {
@ -820,7 +821,7 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
public void a_insert()
{
if (showOpenFileDialog(propsFilter, propsFilter[0]) == JFileChooser.APPROVE_OPTION) {
if (showOpenFileDialog(propsFilter) == JFileChooser.APPROVE_OPTION) {
File file = getChooserFile();
if (file == null) {
error("No file selected");
@ -1090,10 +1091,10 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
// pop up dialog to select file
switch (exportType) {
case Prism.EXPORT_MATLAB:
res = showSaveFileDialog(matlabFilter, matlabFilter[0]);
res = showSaveFileDialog(matlabFilter);
break;
default:
res = showSaveFileDialog(textFilter, textFilter[1]);
res = showSaveFileDialog(labFilters.values(), labFilters.get("lab"));
break;
}
if (res != JFileChooser.APPROVE_OPTION)
@ -1219,7 +1220,7 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
for (i = 0; i < n; i++)
exps[i] = experiments.getExperiment(inds[i]);
// get filename to save
if (showSaveFileDialog(resultsFilter, sep.equals(", ") ? resultsFilter[1] : resultsFilter[0]) == JFileChooser.APPROVE_OPTION) {
if (showSaveFileDialog(sep.equals(", ") ? csvFilter : textFilter) == JFileChooser.APPROVE_OPTION) {
File file = getChooserFile();
Thread t = new ExportResultsThread(this, exps, file, exportMatrix, sep);
t.setPriority(Thread.NORM_PRIORITY);
@ -1781,24 +1782,13 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
}
createPopups();
//file filters
propsFilter = new GUIPrismFileFilter[1];
propsFilter[0] = new GUIPrismFileFilter("PRISM properties (*.props, *.pctl, *.csl)");
propsFilter[0].addExtension("props");
propsFilter[0].addExtension("pctl");
propsFilter[0].addExtension("csl");
resultsFilter = new GUIPrismFileFilter[2];
resultsFilter[0] = new GUIPrismFileFilter("Plain text files (*.txt)");
resultsFilter[0].addExtension("txt");
resultsFilter[1] = new GUIPrismFileFilter("Comma-separated values (*.csv)");
resultsFilter[1].addExtension("csv");
textFilter = new GUIPrismFileFilter[2];
textFilter[0] = new GUIPrismFileFilter("Plain text files (*.txt)");
textFilter[0].addExtension("txt");
textFilter[1] = new GUIPrismFileFilter("Label files (*.lab)");
textFilter[1].addExtension("lab");
matlabFilter = new GUIPrismFileFilter[1];
matlabFilter[0] = new GUIPrismFileFilter("Matlab files (*.m)");
matlabFilter[0].addExtension("m");
propsFilter = new FileNameExtensionFilter("PRISM properties (*.props, *.pctl, *.csl)", "props", "pctl", "csl");
labFilters = new HashMap<String,FileFilter>();
labFilters.put("lab", new FileNameExtensionFilter("Label files (*.lab)", "lab"));
labFilters.put("txt", new FileNameExtensionFilter("Plain text files (*.txt)", "txt"));
textFilter = new FileNameExtensionFilter("Plain text files (*.txt)", "txt");
csvFilter = new FileNameExtensionFilter("Comma-separated values (*.csv)", "csv");
matlabFilter = new FileNameExtensionFilter("Matlab files (*.m)", "m");
}
private void createPopups()

10
prism/src/userinterface/simulator/GUISimulator.java

@ -34,6 +34,8 @@ import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import simulator.*;
import simulator.networking.*;
@ -56,7 +58,7 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect
private GUIMultiProperties guiProp; //reference to the properties information
private GUIMultiModel guiMultiModel; //reference to the model plugin
private SimulatorEngine engine;
private GUIPrismFileFilter[] txtFilter;
private FileFilter textFilter;
private JMenu simulatorMenu;
private JPopupMenu pathPopupMenu;
@ -179,9 +181,7 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect
totalTimeLabel.setText(formatDouble(0.0));
pathLengthLabel.setText("0");
txtFilter = new GUIPrismFileFilter[1];
txtFilter[0] = new GUIPrismFileFilter("Text files (*.txt)");
txtFilter[0].addExtension("txt");
textFilter = new FileNameExtensionFilter("Plain text files (*.txt)", "txt");
displayStyleFast = true;
displayPathLoops = true;
@ -682,7 +682,7 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect
public void a_exportPath()
{
try {
if (showSaveFileDialog(txtFilter, txtFilter[0]) != JFileChooser.APPROVE_OPTION)
if (showSaveFileDialog(textFilter) != JFileChooser.APPROVE_OPTION)
return;
setComputing(true);
engine.exportPath(getChooserFile());

70
prism/src/userinterface/simulator/networking/GUINetworkEditor.java

@ -26,19 +26,45 @@
package userinterface.simulator.networking;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.util.ArrayList;
import java.util.Observable;
import java.util.Observer;
import simulator.networking.*;
import settings.*;
import prism.*;
import userinterface.*;
import userinterface.util.*;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JMenu;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.JTree;
import javax.swing.KeyStroke;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import prism.PrismException;
import settings.FileSelector;
import settings.SettingTable;
import simulator.networking.FileSystem;
import simulator.networking.SSHHost;
import simulator.networking.SimulatorNetworkHandler;
import userinterface.GUIPrism;
public class GUINetworkEditor extends JDialog implements TreeSelectionListener, MouseListener, Observer, FileSelector
{
@ -63,7 +89,7 @@ public class GUINetworkEditor extends JDialog implements TreeSelectionListener,
private boolean modified = false;
private File activeFile = null;
private GUIPrismFileFilter[] netFilters;
private FileNameExtensionFilter netFilter;
/** Creates new form GUINetworkEditor */
@ -92,9 +118,7 @@ public class GUINetworkEditor extends JDialog implements TreeSelectionListener,
networkTree.addTreeSelectionListener(this);
networkTree.addMouseListener(this);
netFilters = new GUIPrismFileFilter[1];
netFilters[0] = new GUIPrismFileFilter("PRISM networks (*.xml)");
netFilters[0].addExtension("xml");
netFilter = new FileNameExtensionFilter("PRISM networks (*.xml)", "xml");
}
public int doModificationCheck()
@ -166,7 +190,7 @@ public class GUINetworkEditor extends JDialog implements TreeSelectionListener,
int cont = doModificationCheck();
if(cont == CONTINUE)
{
if (showOpenFileDialog(netFilters, netFilters[0]) == JFileChooser.APPROVE_OPTION)
if (showOpenFileDialog(netFilter) == JFileChooser.APPROVE_OPTION)
{
File file = GUIPrism.getGUI().getChooser().getSelectedFile();
if (file == null)
@ -222,7 +246,7 @@ public class GUINetworkEditor extends JDialog implements TreeSelectionListener,
public int a_saveAs()
{
if (showSaveFileDialog(netFilters, netFilters[0]) != JFileChooser.APPROVE_OPTION)
if (showSaveFileDialog(netFilter) != JFileChooser.APPROVE_OPTION)
{
return CANCEL;
}
@ -896,12 +920,11 @@ public class GUINetworkEditor extends JDialog implements TreeSelectionListener,
* @param ff The file filter to be used as the default within the filechooser.
* @return An integer which is one of the JFileChooser selection constants.
*/
public int showOpenFileDialog(GUIPrismFileFilter ffs[], GUIPrismFileFilter ff)
public int showOpenFileDialog(FileFilter ff)
{
JFileChooser choose = GUIPrism.getGUI().getChooser();
choose.resetChoosableFileFilters();
for(int j = 0; j < ffs.length; j++)
choose.addChoosableFileFilter(ffs[j]);
choose.addChoosableFileFilter(ff);
choose.setFileFilter(ff);
choose.setSelectedFile(new File(""));
return choose.showOpenDialog(this);
@ -913,12 +936,11 @@ public class GUINetworkEditor extends JDialog implements TreeSelectionListener,
* @param ff The file filter to be used as the default within the filechooser.
* @return An integer which is one of the JFileChooser selection constants.
*/
public int showSaveFileDialog(GUIPrismFileFilter ffs[], GUIPrismFileFilter ff)
public int showSaveFileDialog(FileFilter ff)
{
JFileChooser choose = GUIPrism.getGUI().getChooser();
choose.resetChoosableFileFilters();
for(int j = 0; j < ffs.length; j++)
choose.addChoosableFileFilter(ffs[j]);
choose.addChoosableFileFilter(ff);
choose.setFileFilter(ff);
choose.setSelectedFile(new File(""));
int res = choose.showSaveDialog(this);

95
prism/src/userinterface/util/GUIPrismFileFilter.java

@ -1,95 +0,0 @@
//==============================================================================
//
// Copyright (c) 2002-
// Authors:
// * Andrew Hinton <ug60axh@cs.bham.ac.uk> (University of Birmingham)
// * Dave Parker <david.parker@comlab.ox.ac.uk> (University of Oxford, formerly University of Birmingham)
//
//------------------------------------------------------------------------------
//
// This file is part of PRISM.
//
// PRISM is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// PRISM is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with PRISM; if not, write to the Free Software Foundation,
// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
//==============================================================================
package userinterface.util;
import java.util.Vector;
import java.io.File;
import javax.swing.filechooser.*;
public class GUIPrismFileFilter extends FileFilter
{
private String name;
private Vector<String> exts;
public GUIPrismFileFilter()
{
name = "";
exts = new Vector<String>();
}
public GUIPrismFileFilter(String s)
{
name = s;
exts = new Vector<String>();
}
public void setName(String s)
{
name = s;
}
public void addExtension(String s)
{
exts.add(s);
}
public boolean accept(File f)
{
String ext;
if (f.isDirectory()) {
return true;
}
ext = getFileExtension(f);
if (ext != null) {
return exts.contains(ext);
}
return false;
}
public String getDescription() {
return name;
}
public static String getFileExtension(File f)
{
String ext = null;
String s = f.getName();
int i = s.lastIndexOf('.');
if (i > 0 && i < s.length() - 1) {
ext = s.substring(i+1).toLowerCase();
}
return ext;
}
}
//------------------------------------------------------------------------------
Loading…
Cancel
Save