editor.java
来自「petrinets小程序」· Java 代码 · 共 976 行 · 第 1/3 页
JAVA
976 行
import java.awt.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.JFrame;
public class Editor extends JFrame{
MenuBar menubar;
Menu file, help, Settings, Parallel, Sequentiell, Painting;
CheckboxMenuItem ParMan, ParRan, SeqMan, SeqRan, BW, Col;
Button okay, cancel;
FileDialog Load, Save;
String InputFile, InputPath, OutputFile, OutputPath;
boolean alreadySaved;
boolean runHolding;
boolean demo;
LoadPetriNet Loading;
SavePetriNet Saving;
OverwriteDialog ODialog;
ShowDialog ShowOp;
TextField StatusLine, StatusMode, StatusDiv, StatusCount;
pn PNet;
pn OldPNet;
visOfGraph Vis;
Toolkit tk;
CPictBar PBar;
HelpBox HelpCom;
HelpAbout HelpAb;
runPN runStep;
int StepCount;
int runDelay;
boolean AppletState, NoFileAccess;
URL Docbase;
Panel Status;
// LoadPetriNetApplet LoadApplet;
// visOfStructure visOfStr;
public Editor(String title, URL DocBase) {
super(title);
System.out.println("jPNS is loading...");
PNet = new pn();
// visOfStr = new visOfStructure(this);
StepCount = 0;
runDelay = 100;
runHolding = false;
AppletState = false;
NoFileAccess = false;
demo = false;
Docbase = DocBase;
// Create the menubar. Tell the frame about it.
menubar = new MenuBar();
this.setMenuBar(menubar);
Save = new FileDialog(this,"Save Petri-Net File",FileDialog.SAVE);
Load = new FileDialog(this,"Load Petri-Net File",FileDialog.LOAD);
Loading = new LoadPetriNet();
Saving = new SavePetriNet();
alreadySaved = false;
// Create the file menu. Add two items to it. Add to menubar.
file = new Menu("File");
file.add(new MenuItem("New"));
file.add(new MenuItem("Load..."));
file.add(new MenuItem("Save"));
file.add(new MenuItem("Save As..."));
file.add(new MenuItem("Quit"));
menubar.add(file);
// Create submenus for Setting menu
ParMan = new CheckboxMenuItem("Manual");
ParRan = new CheckboxMenuItem("Random");
Parallel = new Menu("Parallel");
Parallel.add(ParRan);
Parallel.add(ParMan);
SeqMan = new CheckboxMenuItem("Manual");
SeqRan = new CheckboxMenuItem("Random");
Sequentiell = new Menu("Sequential");
Sequentiell.add(SeqRan);
Sequentiell.add(SeqMan);
SeqRan.setState(true);
BW = new CheckboxMenuItem("Black/White");
Col = new CheckboxMenuItem("Color");
Painting = new Menu("Painting");
Painting.add(Col);
Painting.add(BW);
// Create the Settings menu
Settings = new Menu("Settings");
Settings.add(Parallel);
Settings.add(Sequentiell);
Settings.addSeparator();
Settings.add(new MenuItem("Options"));
Settings.addSeparator();
Settings.add(Painting);
menubar.add(Settings);
Col.setState(true);
// Create Help menu; add an item; add to menubar
help = new Menu("Help");
help.add(new MenuItem("About"));
help.add(new MenuItem("Commands"));
menubar.add(help);
// Display the help menu in a special reserved place.
menubar.setHelpMenu(help);
// Buttonbar
tk = this.getToolkit();
Image[] ups = new Image[12];
Image[] downs = new Image[12];
Image[] diss = new Image[12];
try {
File dtry = new File("examples");
if (dtry.isDirectory()) Load.setDirectory(dtry.getAbsolutePath());
}
catch (SecurityException se) {NoFileAccess = true;}
if (DocBase != null) {
AppletState = true;
try {
ups[0] = tk.getImage(new URL(DocBase, "images/Release.GIF"));
ups[1] = tk.getImage(new URL(DocBase, "images/AddNode.GIF"));
ups[2] = tk.getImage(new URL(DocBase, "images/AddTransition.GIF"));
ups[3] = tk.getImage(new URL(DocBase, "images/AddEdge.GIF"));
ups[4] = tk.getImage(new URL(DocBase, "images/AddToken.GIF"));
ups[5] = tk.getImage(new URL(DocBase, "images/Edit.GIF"));
ups[6] = tk.getImage(new URL(DocBase, "images/Delete.GIF"));
ups[7] = tk.getImage(new URL(DocBase, "images/Save.GIF"));
ups[8] = tk.getImage(new URL(DocBase, "images/Memorize.GIF"));
ups[9] = tk.getImage(new URL(DocBase, "images/Memback.GIF"));
ups[10] = tk.getImage(new URL(DocBase, "images/Step.GIF"));
ups[11] = tk.getImage(new URL(DocBase, "images/StepSing.GIF"));
downs[0] = tk.getImage(new URL(DocBase, "images/ReleaseSelected.GIF"));
downs[1] = tk.getImage(new URL(DocBase, "images/AddNodeSelected.GIF"));
downs[2] = tk.getImage(new URL(DocBase, "images/AddTransitionSelected.GIF"));
downs[3] = tk.getImage(new URL(DocBase, "images/AddEdgeSelected.GIF"));
downs[4] = tk.getImage(new URL(DocBase, "images/AddTokenSelected.GIF"));
downs[5] = tk.getImage(new URL(DocBase, "images/EditSelected.GIF"));
downs[6] = tk.getImage(new URL(DocBase, "images/DeleteSelected.GIF"));
downs[7] = tk.getImage(new URL(DocBase, "images/SaveSelected.GIF"));
downs[8] = tk.getImage(new URL(DocBase, "images/MemorizeSelected.GIF"));
downs[9] = tk.getImage(new URL(DocBase, "images/MembackSelected.GIF"));
downs[10] = tk.getImage(new URL(DocBase, "images/StepSelected.GIF"));
downs[11] = tk.getImage(new URL(DocBase, "images/StepSingSelected.GIF"));
diss[0] = tk.getImage(new URL(DocBase, "images/ReleaseSelected.GIF"));
diss[1] = tk.getImage(new URL(DocBase, "images/AddNodeSelected.GIF"));
diss[2] = tk.getImage(new URL(DocBase, "images/AddTransitionSelected.GIF"));
diss[3] = tk.getImage(new URL(DocBase, "images/AddEdgeSelected.GIF"));
diss[4] = tk.getImage(new URL(DocBase, "images/AddTokenSelected.GIF"));
diss[5] = tk.getImage(new URL(DocBase, "images/EditSelected.GIF"));
diss[6] = tk.getImage(new URL(DocBase, "images/DeleteSelected.GIF"));
diss[7] = tk.getImage(new URL(DocBase, "images/SaveSelected.GIF"));
diss[8] = tk.getImage(new URL(DocBase, "images/MemorizeSelected.GIF"));
diss[9] = tk.getImage(new URL(DocBase, "images/MembackSelected.GIF"));
diss[10] = tk.getImage(new URL(DocBase, "images/StepSelected.GIF"));
diss[11] = tk.getImage(new URL(DocBase, "images/StepSingSelected.GIF"));
}
catch (MalformedURLException m) {System.out.println("Wrong URL");}
} else {
ups[0] = tk.getImage("images/Release.GIF");
ups[1] = tk.getImage("images/AddNode.GIF");
ups[2] = tk.getImage("images/AddTransition.GIF");
ups[3] = tk.getImage("images/AddEdge.GIF");
ups[4] = tk.getImage("images/AddToken.GIF");
ups[5] = tk.getImage("images/Edit.GIF");
ups[6] = tk.getImage("images/Delete.GIF");
ups[7] = tk.getImage("images/Save.GIF");
ups[8] = tk.getImage("images/Memorize.GIF");
ups[9] = tk.getImage("images/Memback.GIF");
ups[10] = tk.getImage("images/Step.GIF");
ups[11] = tk.getImage("images/StepSing.GIF");
downs[0] = tk.getImage("images/ReleaseSelected.GIF");
downs[1] = tk.getImage("images/AddNodeSelected.GIF");
downs[2] = tk.getImage("images/AddTransitionSelected.GIF");
downs[3] = tk.getImage("images/AddEdgeSelected.GIF");
downs[4] = tk.getImage("images/AddTokenSelected.GIF");
downs[5] = tk.getImage("images/EditSelected.GIF");
downs[6] = tk.getImage("images/DeleteSelected.GIF");
downs[7] = tk.getImage("images/SaveSelected.GIF");
downs[8] = tk.getImage("images/MemorizeSelected.GIF");
downs[9] = tk.getImage("images/MembackSelected.GIF");
downs[10] = tk.getImage("images/StepSelected.GIF");
downs[11] = tk.getImage("images/StepSingSelected.GIF");
diss[0] = tk.getImage("images/ReleaseSelected.GIF");
diss[1] = tk.getImage("images/AddNodeSelected.GIF");
diss[2] = tk.getImage("images/AddTransitionSelected.GIF");
diss[3] = tk.getImage("images/AddEdgeSelected.GIF");
diss[4] = tk.getImage("images/AddTokenSelected.GIF");
diss[5] = tk.getImage("images/EditSelected.GIF");
diss[6] = tk.getImage("images/DeleteSelected.GIF");
diss[7] = tk.getImage("images/SaveSelected.GIF");
diss[8] = tk.getImage("images/MemorizeSelected.GIF");
diss[9] = tk.getImage("images/MembackSelected.GIF");
diss[10] = tk.getImage("images/StepSelected.GIF");
diss[11] = tk.getImage("images/StepSingSelected.GIF");
}
PBar = new CPictBar(ups, downs, diss, 12);
this.setLayout(new BorderLayout(3,1));
this.add("North", PBar);
Dimension dimvis = new Dimension(1000,1000);
Vis = new visOfGraph(PNet, dimvis);
this.add("West", Vis);
Vis.resize(1000,1000);
// Status
Status = new Panel();
Status.setLayout(new FlowLayout());
StatusLine = new TextField("Everything OK!", 50);
StatusLine.setEditable(false);
StatusMode = new TextField("SeqRan", 10);
StatusMode.setEditable(false);
StatusDiv = new TextField("Color", 5);
StatusDiv.setEditable(false);
StatusCount = new TextField("0", 5);
StatusCount.setEditable(false);
Status.add(StatusLine);
Status.add(StatusMode);
Status.add(StatusDiv);
Status.add(StatusCount);
this.add("South", Status);
this.setBackground(Color.lightGray);
Vis.setBackground(Color.white);
}
/*
void loadAppletPN(String file) {
try {
URL LoadNetAppl = new URL(Docbase, "examples/" + file + ".net");
PNet = Loading.loadNewNetApplet(LoadNetAppl);
Vis.setPN(PNet);
StatusLine.setText("PetriNet loaded.");
}
catch (MalformedURLException m) {
StatusLine.setText("Sorry, the specified URL can't be opened.");
}
catch (IOException i) {
StatusLine.setText("Sorry, the specified URL can't be connected to.");
}
}
*/
boolean loadPN() {
if (InputFile.length() != 0) {
try {
if (Loading.setFile(InputPath)) {
PNet = Loading.loadNewNet();
return true;
} else {
StatusLine.setText("The selected file \"" + InputPath + "\" is no PetriNet-File.");
return false;
}
}
catch (FileNotFoundException f) {
StatusLine.setText("Sorry, the file \"" + InputPath + "\" can't be found.");
return false;
}
catch (IOException i) {
StatusLine.setText("Sorry, the file \"" + InputPath + "\" can't be opened.");
return false;
}
catch (SecurityException s) {
(new SorryDialog(this)).show();
return false;
}
}
else {
return false;
}
}
boolean savePN(boolean simple) {
if (OutputFile.length() != 0) {
try {
Saving.setFile(OutputPath);
Saving.saveNet(PNet);
return true;
}
catch (FileExistsException f) {
if (!simple || !alreadySaved) {
ODialog = new OverwriteDialog(this, "File " + OutputPath + " exists! Overwrite?", Saving, PNet);
ODialog.show();
return true;
} else {
try {
Saving.deleteFile();
Saving.saveNet(PNet);
return true;
}
catch (IOException i) {
StatusLine.setText("Can't save PetriNet in file \"" + OutputPath + ".\" Writeprotected?");
return false;
}
catch (SecurityException s) {
(new SorryDialog(this)).show();
return false;
}
}
}
catch (IOException i) {
StatusLine.setText("Can't save PetriNet in file \"" + OutputPath + ".\" Writeprotected?");
return false;
}
catch (SecurityException s) {
(new SorryDialog(this)).show();
return false;
}
}
else return false;
}
public pn returnPNet(){
return PNet;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?