📄 reogviewer.java
字号:
// Show save dialog; this method does not return until the dialog is closed
fc.showSaveDialog(reogFrame);
if (fc.getSelectedFile() != null) {
System.out.println(fc.getSelectedFile());
cm.saveAs(fc.getSelectedFile());
}
} else if (eventSource == clearItem) {
synchronized(consoleArea) {
consoleArea.setText("");
}
} else if (eventSource==selectAllItem) {
consoleArea.selectAll();
}
}
public synchronized void run() {
while (Thread.currentThread() == reader) {
try {
this.wait(100);
} catch (InterruptedException ie) {
}
try {
if (pin.available() != 0) {
String input = this.readLine(pin);
consoleArea.insert(input, 0); // insert System.out to front of textArea
}
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use Options | File Templates.
}
if (quit) {
System.err.println("I am quiting");
return;
}
}
}
protected synchronized String readLine(PipedInputStream in) throws IOException {
String input = "";
do {
int available = in.available();
if (available == 0) break;
byte b[] = new byte[available];
in.read(b);
input = input + new String(b, 0, b.length);
} while (!input.endsWith("\n") && !input.endsWith("\r\n") && !quit);
return input;
}
protected void refillModel() {
Element top = cm.getBaseDocument().getRootElement();
DisplayNode displayTop = new DisplayNode(top);
DefaultMutableTreeNode root = new DefaultMutableTreeNode(displayTop);
model = new SortTreeModel(root, new TreeStringComparator());
treeWalk(model, root, top);
this.fillSubTree(model, root, "Global Values", "global-value-ref");
this.fillSubTree(model, root, "Global References", "global-reference");
this.fillSubTree(model, root, "Beans", "bean");
this.fillSubTree(model, root, "Menus", "menu");
tree.setModel(model);
this.loadEditPane(ProjectPropertiesEditTab, (Element)cm.getBaseDocument().selectSingleNode("/strutscreator/property"));
//tabPane.addTab("Project Properts", pp.getEditForm());
}
/** Create a Swing GUI containing the document */
protected JTree prepareXmlTree() throws Exception {
Element top = cm.getBaseDocument().getRootElement();
DisplayNode displayTop = new DisplayNode(top);
DefaultMutableTreeNode root = new DefaultMutableTreeNode(displayTop);
model = new SortTreeModel(root, new TreeStringComparator());
//tree.setRootVisible(false);
treeWalk(model, root, top);
this.fillSubTree(model, root, "Global Values", "global-value-ref");
this.fillSubTree(model, root, "Global References", "global-reference");
this.fillSubTree(model, root, "Beans", "bean");
this.fillSubTree(model, root, "Menus", "menu");
if (tree == null) {
tree = new JTree(model);
cml = new TreeContextMenuListener(this);
tree.addMouseListener(cml);
IconNodeRenderer renderer = new IconNodeRenderer();
// renderer.setClosedIcon(new ImageIcon("red-ball.gif"));
// renderer.setOpenIcon(new ImageIcon("yellow-ball.gif"));
// renderer.setLeafIcon(new ImageIcon("blue-ball.gif"));
tree.setCellRenderer(renderer);
}
return tree;
}
public void treeWalk(SortTreeModel model, DefaultMutableTreeNode current, Element element) {
for (int i = 0, size = element.nodeCount(); i < size; i++) {
Node node = element.node(i);
if (node instanceof Element) {
if (!(node.getName().equals("bean") || node.getName().equals("menu")
|| node.getName().equals("global-value-ref") || node.getName().equals("global-reference"))) {
DisplayNode qn = new DisplayNode((Element) node);
DefaultMutableTreeNode dnode = new DefaultMutableTreeNode(qn);
model.insertNodeInto(dnode, current);
treeWalk(model, dnode, (Element) node);
}
} else {
// do something....
}
}
}
public SortTreeModel getCurrentModel() {
return this.model;
}
public JTree getCurrentTree() {
return this.tree;
}
public void loadEditPane(String paneName, Element e) {
/*
Retrieves (Simple) form from a collection and displays it on
a tab.
*/
if (tabPane.getTabCount() > 0) {
SimpleForm oldForm = (SimpleForm)tabMap.get(currentPaneName);
oldForm.doSave(); // save current entry form to memory
tabPane.remove(0);
}
SimpleForm newForm = (SimpleForm)tabMap.get(paneName);
if (newForm != null) {
tabPane.addTab(newForm.getTitle(), newForm.getEditForm());
newForm.setValues(e);
currentPaneName = paneName;
}
tabPane.setSelectedIndex(0);
}
public ConfigManager getManager() {
return this.cm;
}
public void fillSubTree(SortTreeModel model, DefaultMutableTreeNode root,
String branchName, String elementsName) {
DefaultMutableTreeNode topNode = new DefaultMutableTreeNode(branchName);
model.insertNodeInto(topNode, root);
Iterator elementIterator = cm.getBaseDocument().getRootElement().elements(elementsName).iterator();
while (elementIterator.hasNext()) {
Element element = (Element) elementIterator.next();
DisplayNode dn = new DisplayNode(element);
DefaultMutableTreeNode dmt = new DefaultMutableTreeNode(dn);
model.insertNodeInto(dmt, topNode);
treeWalk(model, dmt, element);
}
}
public void fillExistingNode(DefaultMutableTreeNode nodeToFill,
String branchName, String elementsName) {
Iterator elementIterator = cm.getBaseDocument().getRootElement().elements(elementsName).iterator();
while (elementIterator.hasNext()) {
Element element = (Element) elementIterator.next();
treeWalk(this.model, nodeToFill, element);
}
}
public void fillExistingNode(DefaultMutableTreeNode nodeToFill, Element elm) {
treeWalk(this.model, nodeToFill, elm);
}
/**
Add the text field and "Add" button to add a new class.
*/
JFrame reogFrame;
private final PipedInputStream pin = new PipedInputStream();
private Timer changeMonitor;
private ConfigManager cm;
private SortTreeModel model;
private JTree tree;
protected TreePath m_clickedPath;
private JMenuItem newItem;
private JMenuItem openItem;
private JMenuItem saveItem;
private JMenuItem saveAsItem;
private JMenuItem generateAppItem;
private JMenuItem reverseDBItem;
private JMenuItem exitItem;
private JMenuItem preferencesItem;
private JMenuItem templatesItem;
private JMenuItem dumpItem;
private JMenuItem helpIndexItem;
private JMenuItem helpAboutItem;
private JPopupMenu consoleMenu;
private JMenuItem clearItem;
private JMenuItem selectAllItem;
private JTabbedPane tabPane;
private JTextArea consoleArea;
private boolean quit;
private Thread reader;
private TreeContextMenuListener cml;
private DatabaseEditPane dbEditPane;
private GlobalValueEditPane gvep;
private ProjectProperties pp;
private SecurityConstraintPane scp;
private BuildEditPane buildEditPane;
private BeanEditPane bep;
private ColumnEditPane cep;
private GlobalReferencePane gref;
private QueryEditPane qep;
private ProcessEditPane pep;
private MenuEditPane mep;
public static String ProjectPropertiesEditTab = "ProjectPropertiesEditTab";
public static String BuildEditTab = "BuildEditTab";
public static String DatabaseEditTab = "DatabaseEditTab";
public static String GlobalValueEditTab = "GlobalValueEditTab";
public static String BeanEditTab = "BeanEditTab";
public static String SecurityEditTab = "SecurityEditTab";
public static String ColumnEditTab = "ColumnEditTab";
public static String GlobalRefTab = "GlobalRefTab";
public static String QueryEditTab = "QueryEditTab";
public static String ProcessEditTab = "ProcessEditTab";
public static String MenuEditTab = "MenuEditTab";
private String currentPaneName;
Map tabMap;
class consoleMenuListener implements MouseListener {
//{{{ Mouse Listener Interface Implementation
private void handleMouseEvent(MouseEvent evt) {
if (evt.isPopupTrigger()) {
if (consoleMenu.isVisible()) {
consoleMenu.setVisible(false);
} else {
consoleMenu.show((Component)evt.getSource(), evt.getX(), evt.getY());
}
}
}
public void mousePressed(MouseEvent evt) {
handleMouseEvent(evt);
}
public void mouseReleased(MouseEvent evt) {
handleMouseEvent(evt);
}
public void mouseClicked(MouseEvent e) { }
public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -