⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 projectdialog.java

📁 java 调用windows的api
💻 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 + -