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 ModuleFromPanelComponent extends AbstractPanelComponent implements TreeSelectionListener {
private static final long serialVersionUID = 5436437579750820119L;
private AppliedRuleController appliedRuleController;
private boolean isException;
private JLabel moduleFromJLabel, moduleFromContentsJLabel;
private CombinedModuleTree moduleFromTree;
public ModuleFromPanelComponent(boolean isException, AppliedRuleController appliedRuleController) {
super();
this.isException = isException;
this.appliedRuleController = appliedRuleController;
initGUI();
}
private void createFromModuleContentsJLabel() {
moduleFromContentsJLabel = new JLabel();
String currentModuleName = appliedRuleController.getCurrentModuleName();
moduleFromContentsJLabel.setText(currentModuleName);
}
private JScrollPane createFromModuleScrollPane() {
AbstractCombinedComponent rootComponent = appliedRuleController.getModuleTreeComponents();
moduleFromTree = new CombinedModuleTree(rootComponent, appliedRuleController.getCurrentModuleId());
moduleFromTree.addTreeSelectionListener(this);
JScrollPane moduleTreeScrollPane = new JScrollPane(moduleFromTree);
return moduleTreeScrollPane;
}
@Override
public Object getValue() {
Object returnObject;
if (!showScrollPane()) {
returnObject = appliedRuleController.getCurrentModuleId();
} else {
returnObject = moduleFromTree.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);
moduleFromJLabel = new JLabel(ServiceProvider.getInstance().getLocaleService().getTranslatedString("FromModule"));
this.add(moduleFromJLabel, gridBagConstraints);
gridBagConstraints.gridx++;
gridBagConstraints.fill = GridBagConstraints.BOTH;
if (showScrollPane()) {
this.add(createFromModuleScrollPane(), gridBagConstraints);
} else {
createFromModuleContentsJLabel();
this.add(moduleFromContentsJLabel, gridBagConstraints);
}
}
private boolean showScrollPane(){
boolean result = false;
String exceptionToRuleType = appliedRuleController.getSelectedRuleTypeKey();
if (isException && ((exceptionToRuleType.equals("FacadeConvention")) || (exceptionToRuleType.equals("IsTheOnlyModuleAllowedToUse")))) {
result = true;
}
return result;
}
@Override
public void initGUI() {
super.initGUI();
initDetails();
}
@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 (moduleFromTree != null) {
if (o instanceof Long) {
moduleFromTree.setSelectedRow((Long) o);
}
}
}
@Override
public void valueChanged(TreeSelectionEvent arg0) {
// TODO Auto-generated method stub
}
}