📄 typebrowserframe.java
字号:
package org.jawin.browser.gui;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import org.jawin.browser.data.*;
import org.jawin.browser.tree.*;
import org.jawin.browser.util.CommonUtilities;
import org.jawin.browser.util.ExtensionFileFilter;
import java.io.File;
import org.jawin.browser.image.ImageManager;
import org.jawin.browser.xml.XMLPanel;
import org.jawin.browser.log.Log;
import org.jawin.browser.java.*;
import org.jawin.browser.info.*;
import org.jawin.browser.typelib.TypeParser;
import org.jawin.browser.xsl.*;
import org.jawin.browser.dialog.*;
import org.jawin.browser.project.*;
import org.jawin.browser.toolbar.*;
import org.jawin.browser.codegen.CodeGenerator;
import org.jawin.browser.help.HelpManager;
import org.jawin.browser.util.FileUtilities;
import org.jawin.browser.popup.PopupManager;
/**
* Main frame for the application
*
* <p>Title: Jawin Code Generation GUI</p>
* <p>Description: GUI for exploring type libraries and generating Java code</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: Open Source Incentive</p>
*
* @author Josh Passenger
* @version 1.0
*/
public class TypeBrowserFrame extends JFrame implements TypeDataTreeSelectionListener
{
private JPanel contentPane;
private JMenuBar menuBar = new JMenuBar();
private JMenu menuFile = new JMenu();
private JMenuItem menuFileExit = new JMenuItem();
private BorderLayout borderLayout1 = new BorderLayout();
private JSplitPane splitPane = new JSplitPane();
private JScrollPane treeScrollPane = new JScrollPane();
private TypeDataTreeModel treeModel = new TypeDataTreeModel();
private TypeDataTree typeDataTree = new TypeDataTree(treeModel);
private JTabbedPane tabbedPane = new JTabbedPane();
private InfoPanel infoPanel = new InfoPanel();
private XMLPanel xmlPanel = new XMLPanel();
private JavaSourcePanel javaSourcePanel = new JavaSourcePanel();
private File libraryFile = null;
private JMenu menuCodeGen = new JMenu();
private JMenuItem menuCodeGenGenerateFull = new JMenuItem();
private JMenuItem menuCodeGenSaveJava = new JMenuItem();
private JMenuItem menuCodeGenCloseJava = new JMenuItem();
private XSLPanel xslPanel = null;
private TransformationPanel transformationPanel = new TransformationPanel();
private JMenu menuTools = new JMenu();
private JMenuItem menuToolsCodeCompletion = new JMenuItem();
private JMenu menuProject = new JMenu();
private JMenuItem menuProjectProperties = new JMenuItem();
private ToolBar toolbar = new ToolBar();
private File lastDirectory = null;
/**
* Tool bar buttons
*/
private ToolBarButton newProjectButton = new ToolBarButton("images/newProject.png", "New project");
private ToolBarButton openProjectButton = new ToolBarButton("images/open.png", "Open project");
private ToolBarButton editProjectButton = new ToolBarButton("images/projectProperties.png", "Edit project properties");
private ToolBarButton createJavaButton = new ToolBarButton("images/createJava.png", "Create code for selected node");
private ToolBarButton saveJavaButton = new ToolBarButton("images/save.png", "Save Java files");
private ToolBarButton closeJavaButton = new ToolBarButton("images/trash.png", "Close all Java files");
private ToolBarButton helpButton = new ToolBarButton("images/help.png", "Show windows help");
private ToolBarButton saveXMLButton = new ToolBarButton("images/savexml.png", "Save XML");
private ToolBarButton saveXSLButton = new ToolBarButton("images/savexsl.png", "Save XSL stylesheet");
private ToolBarButton openXSLButton = new ToolBarButton("images/openxsl.png", "Open XSL stylesheet");
JMenuItem menuCodeGenerateSelected = new JMenuItem();
JMenuItem menuProjectNewProject = new JMenuItem();
JMenuItem menuProjectOpenProject = new JMenuItem();
JMenuItem menuToolsSaveXML = new JMenuItem();
JMenuItem menuToolsOpenXSL = new JMenuItem();
JMenuItem menuToolsSaveXSL = new JMenuItem();
public TypeBrowserFrame()
{
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
/**
* Initialize the global reference to the root frame
*/
FrameManager.initialize(this);
try
{
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
}
}
private void jbInit() throws Exception
{
setIconImage(ImageManager.getInstance().getImage("images/icon.gif").getImage());
xslPanel = new XSLPanel();
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(borderLayout1);
setSize(new Dimension(800, 600));
setTitle("Jawin Type Browser");
menuFile.setText("File");
menuFile.setMnemonic('F');
menuFileExit.setText("Exit");
menuFileExit.setMnemonic('x');
menuCodeGen.setText("Code Generation");
menuCodeGen.setMnemonic('C');
menuCodeGenGenerateFull.setText("Generate full code");
menuCodeGenSaveJava.setText("Save Java files");
menuCodeGenSaveJava.setEnabled(false);
menuCodeGenCloseJava.setText("Close all Java files");
menuCodeGenCloseJava.setEnabled(false);
menuTools.setText("Tools");
menuTools.setMnemonic('T');
menuToolsCodeCompletion.setText("Configure code completion");
menuProject.setText("Project");
menuProject.setMnemonic('P');
menuProjectProperties.setEnabled(false);
menuProjectProperties.setText("Project properties");
menuCodeGenerateSelected.setEnabled(false);
menuCodeGenerateSelected.setText("Generate selected node");
menuProjectNewProject.setText("New project");
menuProjectNewProject.setMnemonic('N');
menuProjectOpenProject.setText("Open project");
menuProjectOpenProject.setMnemonic('O');
menuToolsSaveXML.setText("Save XML");
menuToolsOpenXSL.setText("Open XSL");
menuToolsOpenXSL.setMnemonic('O');
menuToolsSaveXSL.setText("Save XSL");
menuFile.add(menuFileExit);
menuBar.add(menuFile);
menuBar.add(menuProject);
menuBar.add(menuCodeGen);
menuBar.add(menuTools);
toolbar.add(newProjectButton, null);
toolbar.add(openProjectButton, null);
toolbar.add(editProjectButton, null);
editProjectButton.setEnabled(false);
toolbar.add(createJavaButton, null);
createJavaButton.setEnabled(false);
toolbar.add(saveJavaButton, null);
saveJavaButton.setEnabled(false);
toolbar.add(closeJavaButton, null);
closeJavaButton.setEnabled(false);
toolbar.add(helpButton, null);
helpButton.setEnabled(false);
toolbar.addSeparator(new Dimension(5, 20));
toolbar.add(saveXMLButton, null);
toolbar.add(openXSLButton, null);
toolbar.add(saveXSLButton, null);
contentPane.add(toolbar, BorderLayout.NORTH);
contentPane.add(splitPane, BorderLayout.CENTER);
splitPane.add(treeScrollPane, JSplitPane.LEFT);
splitPane.add(tabbedPane, JSplitPane.RIGHT);
treeScrollPane.getViewport().add(typeDataTree);
menuCodeGen.add(menuCodeGenGenerateFull);
menuCodeGen.add(menuCodeGenerateSelected);
menuCodeGen.add(menuCodeGenSaveJava);
menuCodeGen.add(menuCodeGenCloseJava);
menuTools.add(menuToolsSaveXML);
menuTools.addSeparator();
menuTools.add(menuToolsOpenXSL);
menuTools.add(menuToolsSaveXSL);
menuTools.addSeparator();
menuTools.add(menuToolsCodeCompletion);
menuProject.add(menuProjectNewProject);
menuProject.add(menuProjectOpenProject);
menuProject.addSeparator();
menuProject.add(menuProjectProperties);
tabbedPane.addTab(" Info ", ImageManager.getInstance().getImage("images/tab.png"), infoPanel);
tabbedPane.addTab(" Code ", ImageManager.getInstance().getImage("images/tab.png"), javaSourcePanel);
tabbedPane.addTab(" XML ", ImageManager.getInstance().getImage("images/tab.png"), xmlPanel);
tabbedPane.addTab(" XSL ", ImageManager.getInstance().getImage("images/tab.png"), xslPanel);
tabbedPane.addTab("Transform", ImageManager.getInstance().getImage("images/tab.png"), transformationPanel);
setJMenuBar(menuBar);
registerListeners();
splitPane.setDividerLocation(250);
}
private void registerListeners()
{
menuFileExit.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
exit();
}
});
openProjectButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
openProject();
}
});
newProjectButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
newProject();
}
});
menuCodeGenGenerateFull.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
generateAllJavaCode();
}
});
menuCodeGenerateSelected.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
generateSelectedJavaCode();
}
});
menuCodeGenSaveJava.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
saveJavaFiles();
}
});
menuCodeGenCloseJava.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
closeJavaFiles();
}
});
menuToolsCodeCompletion.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
configureCodeCompletion();
}
});
transformationPanel.addComponentListener(new java.awt.event.ComponentAdapter()
{
public void componentShown(ComponentEvent e)
{
performInlineTransformation();
}
});
menuProjectProperties.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
editProjectProperties();
}
});
editProjectButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
editProjectProperties();
}
});
menuProjectNewProject.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
newProject();
}
});
menuProjectOpenProject.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
openProject();
}
});
createJavaButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
generateSelectedJavaCode();
}
});
helpButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
showHelp();
}
});
saveJavaButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
saveJavaFiles();
}
});
closeJavaButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
closeJavaFiles();
}
});
saveXMLButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
saveXML();
}
});
openXSLButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
openXSL();
}
});
saveXSLButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
saveXSL();
}
});
menuToolsSaveXML.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
saveXML();
}
});
menuToolsOpenXSL.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
openXSL();
}
});
menuToolsSaveXSL.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
saveXSL();
}
});
typeDataTree.addTypeDataTreeSelectionListener(xmlPanel);
typeDataTree.addTypeDataTreeSelectionListener(infoPanel);
typeDataTree.addTypeDataTreeSelectionListener(this);
typeDataTree.addTypeDataTreeSelectionListener(PopupManager.getInstance());
}
private void exit()
{
System.exit(0);
}
protected void processWindowEvent(WindowEvent e)
{
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING)
{
exit();
}
}
public void show()
{
center();
super.show();
}
private void center()
{
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = getSize();
if (frameSize.height > screenSize.height)
{
frameSize.height = screenSize.height;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -