package jdepend.client.ui.componentconf; import java.awt.BorderLayout; import java.awt.Component; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import jdepend.framework.exception.JDependException; import jdepend.framework.util.BundleUtil; import jdepend.model.component.modelconf.ComponentConfException; /** * 组件配置信息窗口抽象类 * * @author wangdg * */ public abstract class ComponentConfDialog extends JDialog { protected JTextField componentname; protected JCheckBox platformType; protected JCheckBox domainType; protected JCheckBox appType; protected JCheckBox interactiveType; public ComponentConfDialog() { this.setLayout(new BorderLayout()); setSize(250, 150); this.setLocationRelativeTo(null);// 窗口在屏幕中间显示 JPanel content = new JPanel(new BorderLayout()); JLabel componentLabel = new JLabel("组件名:"); content.add(BorderLayout.WEST, componentLabel); componentname = new JTextField(); componentname.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { doService(e); } catch (JDependException e1) { e1.printStackTrace(); JOptionPane.showMessageDialog((Component) e.getSource(), e1.getMessage(), "alert", JOptionPane.ERROR_MESSAGE); } } }); content.add(BorderLayout.CENTER, componentname); JPanel typePanel = new JPanel(new GridLayout(2, 2)); this.platformType = new JCheckBox("平台组件"); this.platformType.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { ComponentConfDialog.this.domainType.setSelected(false); ComponentConfDialog.this.interactiveType.setSelected(false); ComponentConfDialog.this.appType.setSelected(false); } } }); typePanel.add(this.platformType); this.domainType = new JCheckBox("领域业务组件"); this.domainType.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { ComponentConfDialog.this.platformType.setSelected(false); ComponentConfDialog.this.interactiveType.setSelected(false); ComponentConfDialog.this.appType.setSelected(false); } } }); typePanel.add(this.domainType); this.appType = new JCheckBox("应用业务组件"); this.appType.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { ComponentConfDialog.this.platformType.setSelected(false); ComponentConfDialog.this.domainType.setSelected(false); ComponentConfDialog.this.interactiveType.setSelected(false); } } }); typePanel.add(this.appType); this.interactiveType = new JCheckBox("交互组件"); this.interactiveType.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { ComponentConfDialog.this.platformType.setSelected(false); ComponentConfDialog.this.domainType.setSelected(false); ComponentConfDialog.this.appType.setSelected(false); } } }); typePanel.add(this.interactiveType); content.add(BorderLayout.SOUTH, typePanel); JPanel buttonBar = new JPanel(new FlowLayout()); buttonBar.add(createOkButton()); buttonBar.add(createCancelButton()); this.add(BorderLayout.CENTER, content); this.add(BorderLayout.SOUTH, buttonBar); } protected abstract void doService(ActionEvent e) throws JDependException; protected int getComponentLayer() { int layer = jdepend.model.Component.UndefinedComponentLevel; if (this.platformType.isSelected()) { layer = jdepend.model.Component.PlatformComponentLevel; } if (this.domainType.isSelected()) { layer = jdepend.model.Component.DomainComponentLevel; } if (this.appType.isSelected()) { layer = jdepend.model.Component.AppComponentLevel; } if (this.interactiveType.isSelected()) { layer = jdepend.model.Component.InteractiveComponentLevel; } return layer; } protected Component createOkButton() { JButton button = new JButton(BundleUtil.getString(BundleUtil.Command_OK)); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (componentname.getText() == null || componentname.getText().length() == 0) { JOptionPane.showMessageDialog((Component) e.getSource(), "请录入组件名称", "alert", JOptionPane.ERROR_MESSAGE); return; } try { doService(e); ComponentConfDialog.this.dispose(); } catch (JDependException e1) { e1.printStackTrace(); JOptionPane.showMessageDialog((Component) e.getSource(), e1.getMessage(), "alert", JOptionPane.ERROR_MESSAGE); } } }); return button; } protected Component createCancelButton() { JButton button = new JButton(BundleUtil.getString(BundleUtil.Command_Cancel)); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ComponentConfDialog.this.dispose(); } }); return button; } }