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

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

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

import java.awt.BorderLayout;

import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JComponent;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JViewport;
import javax.swing.ScrollPaneConstants;

import org.yaoqiang.util.Resources;

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

	private static final long serialVersionUID = 1L;

	protected BaseDialog parentDialog;

	protected JScrollPane scrollPane;

	protected PanelFactory panelFactory;

	protected boolean isModified = false;

	public PanelContainer(BaseDialog parentDialog) {
		this.parentDialog = parentDialog;
		init();
		initPanelContainer();
	}

	public void init() {
		panelFactory = new PanelFactory(this);
	}
	
	public void initPanelContainer() {
		scrollPane = new JScrollPane();
		scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);

		JViewport port = scrollPane.getViewport();
		port.setScrollMode(JViewport.BLIT_SCROLL_MODE);
		scrollPane.getVerticalScrollBar().setUnitIncrement(20);
		scrollPane.getHorizontalScrollBar().setUnitIncrement(40);

		setLayout(new BorderLayout());

		JPanel wp = new JPanel();
		wp.setLayout(new BoxLayout(wp, BoxLayout.Y_AXIS));

		wp.add(Box.createVerticalStrut(5));
		wp.add(scrollPane);

		add(wp, BorderLayout.CENTER);
	}

	public JComponent getDisplay() {
		return this;
	}

	public boolean isModified() {
		return this.isModified;
	}

	public void panelChanged() {
		setModified(true);
	}

	public int showModifiedWarning() {
		int option = JOptionPane.showConfirmDialog(null, Resources.get("saveChanges"), Resources.get("optionTitle"), JOptionPane.YES_NO_CANCEL_OPTION);
		if (option == JOptionPane.YES_OPTION) {
			apply();
			setModified(false);
		}
		return option;
	}

	public void apply() {
		Panel p = getViewPanel();
		if (p != null) {
			p.saveObjects();
		}
	}

	public void setModified(boolean isModified) {
		this.isModified = isModified;
	}

	public void setActiveObject(Object el, String type) {
		setModified(false);
		setViewPanel(panelFactory.getPanel(el, type));
	}

	public BaseDialog getParentDialog() {
		return parentDialog;
	}

	public PanelFactory getPanelFactory() {
		return panelFactory;
	}

	public Panel getViewPanel() {
		return (Panel) scrollPane.getViewport().getView();
	}

	public void setViewPanel(Panel panel) {
		scrollPane.setViewportView(panel);
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy