package husacct.define.presentation.jpanel; import husacct.ServiceProvider; import husacct.common.enums.ModuleTypes; import husacct.common.help.presentation.HelpableJPanel; import husacct.common.services.IServiceListener; import husacct.define.presentation.draganddrop.customdroptargetlisterner.EditpanelDropListener; import husacct.define.presentation.utils.DefaultMessages; import husacct.define.task.DefinitionController; import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.HashMap; import java.util.Observable; import java.util.Observer; import javax.swing.BorderFactory; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import org.apache.log4j.Logger; public class EditModuleJPanel extends HelpableJPanel implements Observer,IServiceListener { private static final long serialVersionUID = -9020336576931490389L; private JLabel nameLabel; private JTextField nameTextfield; private JLabel descriptionLabel; private JScrollPane descriptionScrollPane; private JTextArea descriptionTextArea; private JButton updateDescriptionButton; private JLabel moduleTypeLabel; private JComboBox<String> moduleTypeComboBox; private String[] moduleTypes_Translated = { ServiceProvider.getInstance().getLocaleService().getTranslatedString(ModuleTypes.SUBSYSTEM.toString()), ServiceProvider.getInstance().getLocaleService().getTranslatedString(ModuleTypes.LAYER.toString()), ServiceProvider.getInstance().getLocaleService().getTranslatedString(ModuleTypes.COMPONENT.toString()), ServiceProvider.getInstance().getLocaleService().getTranslatedString(ModuleTypes.EXTERNAL_LIBRARY.toString()) }; private String[] facadeType = { "Interface" }; private EditpanelDropListener listener = new EditpanelDropListener(this); private final Logger logger = Logger.getLogger(EditModuleJPanel.class); public EditModuleJPanel() { super(); } public void initGui() { DefinitionController.getInstance().addObserver(this); BorderLayout borderLayout = new BorderLayout(); setLayout(borderLayout); setBorder(BorderFactory.createTitledBorder(ServiceProvider .getInstance().getLocaleService() .getTranslatedString("ModulePropertiesTitle"))); setPreferredSize(new java.awt.Dimension(542, 120)); this.add(addDetailsPanel(), BorderLayout.CENTER); this.add(addUpdatePanel(), BorderLayout.EAST); ServiceProvider.getInstance().getControlService().addServiceListener(this); } private JPanel addDetailsPanel() { JPanel detailsPanel = new JPanel(); setDefaultGridLayout(detailsPanel); detailsPanel.setPreferredSize(new java.awt.Dimension(439, 120)); addModuleNameComponent(detailsPanel); addModuleDescriptionComponent(detailsPanel); addModuleTypeComboBox(detailsPanel); return detailsPanel; } private JPanel addUpdatePanel() { JPanel upDatePanel = new JPanel(); BorderLayout borderLayout = new BorderLayout(); upDatePanel.setLayout(borderLayout); upDatePanel.setBorder(BorderFactory.createEmptyBorder(0, 4, 0, 2)); upDatePanel.setPreferredSize(new java.awt.Dimension(90, 120)); updateDescriptionButton = new JButton(); upDatePanel.add(updateDescriptionButton, BorderLayout.PAGE_END); updateDescriptionButton.setText(ServiceProvider.getInstance().getLocaleService().getTranslatedString("Update")); updateDescriptionButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String moduleName = nameTextfield.getText(); String moduleDescription = descriptionTextArea.getText(); ModuleTypes moduleType; if (moduleTypeComboBox.getModel().getSize()== 1) { // Excludes Facade/Interface moduleType = ModuleTypes.FACADE; } else { ModuleTypes[] moduleTypes = {ModuleTypes.SUBSYSTEM, ModuleTypes.LAYER, ModuleTypes.COMPONENT, ModuleTypes.EXTERNAL_LIBRARY}; int indexSelectedModule = moduleTypeComboBox. getSelectedIndex(); moduleType = moduleTypes[indexSelectedModule]; } DefinitionController.getInstance().updateModuleDetails(moduleName, moduleDescription, moduleType); } }); return upDatePanel; } private void addModuleNameComponent(JPanel detailsPanel) { nameLabel = new JLabel(); detailsPanel.add(nameLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); nameLabel.setText(ServiceProvider.getInstance().getLocaleService() .getTranslatedString("ModuleName")); nameTextfield = new JTextField(); listener.addTarget(nameTextfield); nameTextfield.setToolTipText(DefaultMessages.TIP_MODULE); detailsPanel.add(nameTextfield, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); } private void addModuleDescriptionComponent(JPanel detailsPanel) { descriptionLabel = new JLabel(); GridBagConstraints gbc1 = new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0); detailsPanel.add(descriptionLabel, gbc1); descriptionLabel.setText(ServiceProvider.getInstance() .getLocaleService().getTranslatedString("Description")); descriptionScrollPane = new JScrollPane(); GridBagConstraints gbc2 = new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0); detailsPanel.add(descriptionScrollPane, gbc2); descriptionScrollPane.setPreferredSize(new java.awt.Dimension(142, 40)); descriptionTextArea = new JTextArea(); listener.addTarget(descriptionTextArea); //descriptionTextArea.setFont(new java.awt.Font("Tahoma", 0, 11)); descriptionTextArea.setToolTipText(DefaultMessages.TIP_MODULEDESCRIPTION); //descriptionTextArea.addKeyListener(this); descriptionScrollPane.setViewportView(descriptionTextArea); } private void addModuleTypeComboBox(JPanel detailsPanel) { moduleTypeComboBox = new JComboBox<String>(moduleTypes_Translated); moduleTypeLabel = new JLabel(); detailsPanel.add(moduleTypeLabel, new GridBagConstraints(0, 2, 2, 1, 0.0, 0.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.NONE, new Insets(5, 0, 0, 0), 0, 0)); moduleTypeLabel.setText("Module Type"); detailsPanel.add(moduleTypeComboBox, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.BOTH, new Insets(5, 0, 0, 0), 0, 0)); } private void resetGUI() { nameTextfield.setText(""); descriptionTextArea.setText(""); } private void setDefaultGridLayout(JPanel detailsPanel) { GridBagLayout jPanel4Layout = new GridBagLayout(); jPanel4Layout.rowWeights = new double[] { 0.0, 0.1, 0.1 }; jPanel4Layout.rowHeights = new int[] { 27, 7, 7 }; jPanel4Layout.columnWeights = new double[] { 0.0, 0.1 }; jPanel4Layout.columnWidths = new int[] { 118, 7 }; detailsPanel.setLayout(jPanel4Layout); } @Override public void update() { setBorder(BorderFactory.createTitledBorder(ServiceProvider .getInstance().getLocaleService() .getTranslatedString("ModulePropertiesTitle"))); nameLabel.setText(ServiceProvider.getInstance().getLocaleService() .getTranslatedString("ModuleName")); descriptionLabel.setText(ServiceProvider.getInstance() .getLocaleService().getTranslatedString("Description")); } @Override public void update(Observable o, Object arg) { resetGUI(); try{ long moduleId = Long.parseLong(arg.toString()); if (moduleId != -1) { HashMap<String, Object> moduleDetails = DefinitionController.getInstance().getModuleDetails(moduleId); if (!moduleDetails.isEmpty() && !((String) moduleDetails.get("name")).equals("")) { nameTextfield.setText((String) moduleDetails.get("name")); descriptionTextArea.setText((String) moduleDetails.get("description")); String moduleType = (String) moduleDetails.get("type"); // Fill moduleTypeComboBox. if (moduleType.equals("Facade")) { DefaultComboBoxModel<String> facadeModel = new DefaultComboBoxModel<String>(facadeType); moduleTypeComboBox.setModel(facadeModel); moduleTypeComboBox.setSelectedIndex(0); moduleTypeComboBox.setEnabled(false); } else { String moduleType_Translated = ServiceProvider.getInstance().getLocaleService().getTranslatedString(moduleType); DefaultComboBoxModel<String> defaultModel = new DefaultComboBoxModel<String>(moduleTypes_Translated); moduleTypeComboBox.setModel(defaultModel); for (int i = 0; i < moduleTypes_Translated.length; i++) { if (moduleType_Translated.equalsIgnoreCase(moduleTypes_Translated[i])) { moduleTypeComboBox.setSelectedIndex(i); } } moduleTypeComboBox.setEnabled(true); } } } this.repaint(); }catch(Exception e) { logger.error(e.getMessage()); } } }