📄 projectdialog.java
字号:
package org.jawin.browser.dialog;
import java.awt.*;
import javax.swing.*;
import java.io.File;
import org.jawin.browser.project.*;
import java.awt.event.*;
import org.jawin.browser.config.ConfigManager;
import org.jawin.browser.util.ExtensionFileFilter;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
/**
* Enables editing and creating new projects
*
* <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 ProjectDialog extends CenteredDialog implements MouseListener, ListSelectionListener
{
public static final Color SELECTED_COLOR = new Color(197, 223, 118);
private JPanel outerPanel = new JPanel();
private BorderLayout borderLayout1 = new BorderLayout();
private JSplitPane splitPane = new JSplitPane();
private JPanel buttonPanel = new JPanel();
private JScrollPane listScroll = new JScrollPane();
private JScrollPane rightScroll = new JScrollPane();
private JPanel rightButtonPanel = new JPanel();
private JPanel leftButtonPanel = new JPanel();
private JButton okButton = new JButton();
private BorderLayout borderLayout2 = new BorderLayout();
private JButton deleteButton = new JButton();
private JButton newButton = new JButton();
private FlowLayout flowLayout1 = new FlowLayout();
private ProjectListModel projectListModel = new ProjectListModel();
private JList projectList = new JList(projectListModel);
private ProjectTableModel tableModel = new ProjectTableModel();
private ProjectTable projectTable = new ProjectTable(tableModel);
private ProjectListCellRenderer listCellRenderer = new ProjectListCellRenderer();
public ProjectDialog(Frame owner, String title, boolean modal)
{
super(owner, title, modal);
try
{
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public ProjectDialog()
{
try
{
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
}
}
private void jbInit() throws Exception
{
setSize(new Dimension(550, 340));
outerPanel.setLayout(borderLayout1);
buttonPanel.setLayout(borderLayout2);
okButton.setText("OK");
okButton.setPreferredSize(BUTTON_DIMENSION);
deleteButton.setText("Delete");
deleteButton.setEnabled(false);
deleteButton.setPreferredSize(BUTTON_DIMENSION);
newButton.setText("New");
newButton.setPreferredSize(BUTTON_DIMENSION);
leftButtonPanel.setLayout(flowLayout1);
flowLayout1.setAlignment(FlowLayout.LEFT);
buttonPanel.add(leftButtonPanel, BorderLayout.CENTER);
buttonPanel.add(rightButtonPanel, BorderLayout.EAST);
rightButtonPanel.add(okButton, null);
this.getContentPane().add(outerPanel, BorderLayout.CENTER);
outerPanel.add(splitPane, BorderLayout.CENTER);
outerPanel.add(buttonPanel, BorderLayout.SOUTH);
splitPane.add(listScroll, JSplitPane.LEFT);
splitPane.add(rightScroll, JSplitPane.RIGHT);
leftButtonPanel.add(newButton, null);
leftButtonPanel.add(deleteButton, null);
listScroll.getViewport().add(projectList, null);
rightScroll.getViewport().add(projectTable, null);
splitPane.setDividerLocation(200);
projectTable.disableGUI();
projectList.setCellRenderer(listCellRenderer);
projectList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
loadProjectFromManager();
registerListeners();
}
private void loadProjectFromManager()
{
Project project = ProjectManager.getInstance().getCurrentProject();
setTitle("Project: " + project.getProjectFile());
for (int i = 0; i < project.getItemCount(); i++)
{
projectListModel.addProjectItem(project.getItemAt(i));
}
}
private void registerListeners()
{
projectTable.addMouseListener(this);
projectList.addListSelectionListener(this);
okButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
ok();
}
});
newButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
newLibrary();
}
});
deleteButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
deleteLibrary();
}
});
}
/**
* Fired when the table is double clicked
* and a row is selected
*/
public void mouseClicked(MouseEvent e)
{
if (e.getClickCount() == 2)
{
if (projectTable.getSelectedRowCount() == 1)
{
int selectedRow = projectTable.getSelectedRow();
String value = (String) projectTable.getValueAt(selectedRow, 1);
ProjectPropertyDialog dialog = new ProjectPropertyDialog(this, (String) projectTable.getValueAt(selectedRow, 0), true);
dialog.show(value);
if (dialog.isComplete())
{
projectTable.setValueAt(dialog.getText(), selectedRow, 1);
tableModel.fireChangeEvent();
tableModel.extractTableData();
}
}
}
}
public void mousePressed(MouseEvent e)
{
}
public void mouseReleased(MouseEvent e)
{
}
public void mouseEntered(MouseEvent e)
{
}
public void mouseExited(MouseEvent e)
{
}
/**
* Use clicked on OK
*/
private void ok()
{
saveConfiguration();
dispose();
}
private void saveConfiguration()
{
Project currentProject = ProjectManager.getInstance().getCurrentProject();
currentProject.removeAllItems();
for (int i = 0; i < projectListModel.getSize(); i++)
{
currentProject.addProjectItem(projectListModel.getItemAt(i));
}
ProjectManager.getInstance().saveCurrentProject();
}
private void newLibrary()
{
File libraryFile = null;
JFileChooser fileChooser =
new JFileChooser(ConfigManager.getInstance().getString("library.defaultDirectory", System.getProperty("user.dir")));
fileChooser.setMultiSelectionEnabled(false);
ExtensionFileFilter extensionFileFilter = new ExtensionFileFilter("Type libraries");
extensionFileFilter.addExtension(".dll");
extensionFileFilter.addExtension(".exe");
extensionFileFilter.addExtension(".olb");
extensionFileFilter.addExtension(".tlb");
extensionFileFilter.addExtension(".ocx");
extensionFileFilter.addExtension(".h");
fileChooser.setFileFilter(extensionFileFilter);
int result = fileChooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION)
{
libraryFile = fileChooser.getSelectedFile();
if (libraryFile == null)
{
return;
}
if (libraryFile.isDirectory())
{
return;
}
}
else
{
return;
}
ProjectItem item = new ProjectItem(libraryFile);
projectListModel.addProjectItem(item);
}
private void deleteLibrary()
{
ProjectItem item = (ProjectItem) projectList.getSelectedValue();
projectList.clearSelection();
if (item == null)
{
return;
}
projectListModel.removeProjectItem(item);
}
/**
* Fired when the list selection changes
*/
public void valueChanged(ListSelectionEvent e)
{
if (projectList.getSelectedIndex() == -1)
{
deleteButton.setEnabled(false);
projectTable.disableGUI();
tableModel.clear();
}
else
{
deleteButton.setEnabled(true);
ProjectItem item = (ProjectItem) projectList.getSelectedValue();
tableModel.setProjectItem(item);
projectTable.enableGUI();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -