package husacct.define.presentation.jpanel.ruledetails.components; import husacct.ServiceProvider; import husacct.define.presentation.moduletree.CombinedModuleTree; import husacct.define.task.AppliedRuleController; import husacct.define.task.components.AbstractCombinedComponent; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; public class ModuleToPanelComponent extends AbstractPanelComponent implements TreeSelectionListener { private static final long serialVersionUID = -4800834732055260518L; private AppliedRuleController appliedRuleController; private JLabel moduleToJLabel, moduleToContentsJLabel; private CombinedModuleTree moduleToTree; private boolean isException; public ModuleToPanelComponent(boolean isException, AppliedRuleController appliedRuleController) { super(); this.appliedRuleController = appliedRuleController; this.isException = isException; initGUI(); } private void createToModuleContentsJLabel() { moduleToContentsJLabel = new JLabel(); long toId = appliedRuleController.getModuleToId(); String currentModuleName = appliedRuleController.getModuleName(toId); moduleToContentsJLabel.setText(currentModuleName); } private JScrollPane createToModuleScrollPane() { AbstractCombinedComponent rootComponent = appliedRuleController.getModuleTreeComponents(); moduleToTree = new CombinedModuleTree(rootComponent, appliedRuleController.getCurrentModuleId()); moduleToTree.addTreeSelectionListener(this); JScrollPane moduleTreeScrollPane = new JScrollPane(moduleToTree); if(highlightSelectedToModule()) { this.update(appliedRuleController.getCurrentModuleId()); } return moduleTreeScrollPane; } private boolean highlightSelectedToModule(){ boolean result = false; String ruleTupeKey = appliedRuleController.getSelectedRuleTypeKey(); if (ruleTupeKey.equals("FacadeConvention") && (appliedRuleController.getModuleToId() == appliedRuleController.getCurrentModuleId())) { result = true; } return result; } @Override public Object getValue() { Object returnObject; if (!showScrollPane()) { returnObject = appliedRuleController.getModuleToId(); } else { returnObject = moduleToTree.getSelectedTreeValue(); } return returnObject; } @Override public boolean hasValidData() { boolean hasValidData = true; // Add checks on description hasValidData = hasValidData && getValue() != null; return hasValidData; } private void initDetails() { GridBagConstraints gridBagConstraints = new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0); moduleToJLabel = new JLabel(ServiceProvider.getInstance().getLocaleService().getTranslatedString("ToModule")); this.add(moduleToJLabel, gridBagConstraints); gridBagConstraints.gridx++; gridBagConstraints.fill = GridBagConstraints.BOTH; if (showScrollPane()) { this.add(createToModuleScrollPane(), gridBagConstraints); } else { createToModuleContentsJLabel(); this.add(moduleToContentsJLabel, gridBagConstraints); } } @Override public void initGUI() { super.initGUI(); initDetails(); } private boolean showScrollPane(){ boolean result = true; String exceptionToRuleType = appliedRuleController.getSelectedRuleTypeKey(); if (isException && exceptionToRuleType.equals("IsTheOnlyModuleAllowedToUse")) { result = false; } return result; } @Override protected void setLayout() { GridBagLayout ruleDetailsLayout = new GridBagLayout(); ruleDetailsLayout.rowWeights = new double[] { 0.0, 0.0 }; if (showScrollPane()) { ruleDetailsLayout.rowHeights = new int[] { 120, 30 }; } else { // max total height = 290 ruleDetailsLayout.rowHeights = new int[] { 0, 0 }; } ruleDetailsLayout.columnWeights = new double[] { 0.0, 0.0 }; ruleDetailsLayout.columnWidths = new int[] { 130, 660 }; this.setLayout(ruleDetailsLayout); } @Override public void update(Object o) { if (moduleToTree != null) { if (o instanceof Long) { moduleToTree.setSelectedRow((Long) o); } } } @Override public void valueChanged(TreeSelectionEvent arg0) { // TODO Auto-generated method stub } }