//This product is provided under the terms of EPL (Eclipse Public License) //version 1.0. // //The full license text can be read from: http://www.eclipse.org/org/documents/epl-v10.php package org.dtangler.swingui.rulesselector.impl; import org.dtangler.swingui.rulesselector.impl.RulesModel.RuleModel; import org.dtangler.swingui.rulesselector.impl.RulesView.RuleView; public class RulesPresenter { class RulePresenter { private final RuleView view; private final RuleModel model; RulePresenter(RuleView view, RuleModel model) { this.view = view; this.model = model; } public void onAddRule() { model.addRule(); updateRules(); } private void updateRules() { view.setRules(model.getRules()); } private void updateRuleItems() { view.setRuleItems(model.getRuleItems(view.getSelectedRules())); } public void onRemoveRule() { model.removeRules(view.getSelectedRules()); updateRules(); } public boolean canRemoveRule() { return !view.getSelectedRules().isEmpty(); } public void onRuleSelectionChanged() { updateRuleItems(); } public void onAddRuleItems() { model.addRuleItem(view.getSelectedRules().get(0)); updateRuleItems(); } public void onRemoveRuleItems() { model.removeRuleItem(view.getSelectedRules().get(0), view .getSelectedRuleItems()); updateRuleItems(); } public boolean canRemoveRuleItems() { return !view.getSelectedRuleItems().isEmpty(); } public boolean canAddRuleItems() { return view.getSelectedRules().size() == 1; } } private final RulesView view; private final RulesModel model; private final RulePresenter forbiddenDepsPresenter; private final RulePresenter allowedDepsPresenter; public RulesPresenter(RulesView view, RulesModel model) { this.view = view; this.model = model; forbiddenDepsPresenter = new RulePresenter(view.forbiddenDeps(), model .forbiddenDepsModel()); allowedDepsPresenter = new RulePresenter(view.allowedDeps(), model .allowedDepsModel()); updateUi(); } private void updateUi() { view.setGroupNames(model.getGroupNames()); forbiddenDepsPresenter.updateRules(); allowedDepsPresenter.updateRules(); } public void onOk() { model.save(); } public RulePresenter forbiddenDeps() { return forbiddenDepsPresenter; } public RulePresenter allowedDeps() { return allowedDepsPresenter; } public void onNewGroup() { model.newGroup(); view.setGroupNames(model.getGroupNames()); } public void onRemoveGroups() { model.removeGroups(view.getSelectedGroups()); updateUi(); } public void onEditGroup() { model.editGroup(view.getSelectedGroups().get(0)); updateUi(); } public boolean canEditGroup() { return view.getSelectedGroups().size() == 1; } public boolean canRemoveGroups() { return !view.getSelectedGroups().isEmpty(); } }