All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.yaoqiang.dialog.BaseDialog Maven / Gradle / Ivy

There is a newer version: 2.2.18
Show newest version
package org.yaoqiang.dialog;

import java.awt.Container;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.AbstractAction;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
import javax.swing.WindowConstants;

import com.mxgraph.util.mxResources;

/**
 * BaseDialog
 * 
 * @author Shi Yaoqiang([email protected])
 */
public class BaseDialog extends JDialog {

	private static final long serialVersionUID = 1L;

	protected PanelContainer panelContainer;

	protected Panel parentPanel;

	protected JButton buttonOpt;

	protected boolean save = true;

	public BaseDialog() {
		super((Frame) null, true);
		init();
	}

	protected void init() {
		this.panelContainer = new PanelContainer(this);
	}

	public BaseDialog initDialog() {
		return initDialog(true, null, null);
	}

	public BaseDialog initDialog(String optButton) {
		return initDialog(save, null, optButton);
	}

	public BaseDialog initDialog(boolean save) {
		return initDialog(save, null, null);
	}

	public BaseDialog initDialog(boolean save, String okButton) {
		return initDialog(save, okButton, null);
	}

	public BaseDialog initDialog(boolean save, String okButton, String optButton) {
		this.save = save;
		buildDialog(okButton, optButton);
		return this;
	}

	public Panel getParentPanel() {
		return parentPanel;
	}

	public JButton getOptionButton() {
		return buttonOpt;
	}

	public void editObject(Object el, String type) {
		editObject(null, el, type);
	}

	public void editObject(Panel parentPanel, Object el, String type) {
		this.parentPanel = parentPanel;
		panelContainer.setActiveObject(el, type);
		setTitle(mxResources.get(type));
		setDialogVisible();
	}

	protected void setDialogVisible() {
		setSize(panelContainer.getDisplay().getSize());
		pack();
		if (!isVisible()) {
			setLocationRelativeTo(this.getParent());
			setVisible(true);
		}
	}

	protected void buildDialog(String okButton, String optButton) {
		JPanel buttonPanel = new JPanel();
		buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));

		JButton buttonOK = new JButton(mxResources.get(okButton == null ? "ok" : okButton));

		JButton buttonCancel = new JButton(mxResources.get("cancel"));
		if (optButton != null) {
			buttonOpt = new JButton(mxResources.get(optButton));
			buttonPanel.add(Box.createHorizontalStrut(4));
			buttonPanel.add(buttonOpt);
		}
		buttonPanel.add(Box.createHorizontalGlue());
		buttonPanel.add(buttonOK);
		buttonPanel.add(Box.createHorizontalStrut(4));
		buttonPanel.add(buttonCancel);
		buttonPanel.add(Box.createHorizontalStrut(4));

		Container cp = getContentPane();
		cp.removeAll();
		cp.setLayout(new BoxLayout(cp, BoxLayout.Y_AXIS));
		cp.add(panelContainer);
		cp.add(Box.createVerticalStrut(5));
		cp.add(buttonPanel);

		// action listener for confirming
		buttonOK.addActionListener(okl);

		// action listener for cancel
		buttonCancel.addActionListener(al);
		addWindowListener(wl);

		getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false), "Cancel");
		getRootPane().getActionMap().put("Cancel", new AbstractAction() {
			private static final long serialVersionUID = 1L;

			public void actionPerformed(ActionEvent e) {
				al.actionPerformed(e);
			}
		});

		setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
		setResizable(true);
		buttonOK.setDefaultCapable(true);
		getRootPane().setDefaultButton(buttonOK);
	}

	public PanelContainer getPanelContainer() {
		return panelContainer;
	}

	public void save() {
	}
	
	public void close() {
	}

	protected WindowListener wl = new WindowAdapter() {
		public void windowClosing(WindowEvent e) {
			close();
		}
	};

	protected ActionListener al = new ActionListener() {
		public void actionPerformed(ActionEvent ae) {
			close();
		}
	};

	protected ActionListener okl = new ActionListener() {
		public void actionPerformed(ActionEvent ae) {
			save();
		}
	};
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy