/******************************************************************************* * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Exadel, Inc. and Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.common.verification.ui.vrules.wizard.config; import java.util.*; import org.jboss.tools.common.model.ui.wizards.query.AbstractQueryWizardView; import org.jboss.tools.common.model.ui.wizards.query.list.TreeItemSelectionManager; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.TreeItem; import org.jboss.tools.common.verification.ui.vrules.wizard.DescriptionManager; import org.jboss.tools.common.meta.key.WizardKeys; import org.jboss.tools.common.model.options.PreferenceModelUtilities; import org.jboss.tools.common.verification.vrules.VHelper; import org.jboss.tools.common.verification.vrules.VManager; import org.jboss.tools.common.verification.vrules.VRule; import org.jboss.tools.common.verification.vrules.VRuleSet; public class VRulesConfigurationWizardView extends AbstractQueryWizardView { protected ConfigSignificanceView significance = new ConfigSignificanceView(); protected TreeViewer treeViewer; protected ConfigRulesProvider provider = new ConfigRulesProvider(); protected DescriptionManager tip = new DescriptionManager(); public VRulesConfigurationWizardView() { this.setMessage(WizardKeys.getString("VRulesConfigurationWizardView.Message")); //$NON-NLS-1$ this.setTitle(WizardKeys.getString("VRulesConfigurationWizardView.Title")); //$NON-NLS-1$ this.setWindowTitle(WizardKeys.getString("VRulesConfigurationWizardView.WindowTitle")); //$NON-NLS-1$ } public Control createControl(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(); layout.horizontalSpacing = 10; layout.marginHeight = 10; layout.verticalSpacing = 10; layout.marginWidth = 10; composite.setLayout(layout); //composite.setBackground(new Color(null,255,0,0)); GridData gd = new GridData(GridData.FILL_BOTH); composite.setLayoutData(gd); Control sc = significance.createControl(composite); sc.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); treeViewer = new TreeViewer(composite, SWT.CHECK | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); treeViewer.setContentProvider(provider); treeViewer.setLabelProvider(provider); treeViewer.setInput(this); Control tc = treeViewer.getControl(); tc.setLayoutData(new GridData(GridData.FILL_BOTH)); TreeItemSelectionManager m = new TreeItemSelectionManager(treeViewer, new Flipper()); significance.update(); tip.install(treeViewer.getTree()); treeViewer.expandToLevel(2); m.update(); return composite; } public void setObject(Object data) { Properties p = findProperties(data); if(p != null) { String key = p.getProperty("help"); //$NON-NLS-1$ setHelpKey(key); } // Object model = ((Properties)data).get("model"); // Object model = PreferenceModelUtilities.getPreferenceModel(); VManager manager = VHelper.getManager(/*model*/); if(manager == null) return; significance.setManager(manager); VRuleSet[] sets = manager.getRuleSets(); RuleSetWrapper[] ruleSets = new RuleSetWrapper[(sets == null) ? 0 : sets.length]; for (int i = 0; i < sets.length; i++) { ruleSets[i] = new RuleSetWrapper(sets[i]); createChildren(ruleSets[i], sets[i]); } provider.ruleSets = ruleSets; } private void createChildren(RuleSetWrapper ruleSetWrapper, VRuleSet set) { List<ConfigItemWrapper> list = new ArrayList<ConfigItemWrapper>(); VRuleSet[] ss = set.getRuleSets(); for (int j = 0; j < ss.length; j++) { RuleSetWrapper c = new RuleSetWrapper(ss[j]); createChildren(c, ss[j]); c.setParent(ruleSetWrapper); list.add(c); } VRule[] rs = set.getRules(); for (int j = 0; j < rs.length; j++) { list.add(new RuleWrapper(rs[j], significance, ruleSetWrapper)); } ruleSetWrapper.children = (ConfigItemWrapper[])list.toArray(new ConfigItemWrapper[0]); } public void action(String command) { stopEditing(); if(CANCEL.equals(command)) { _cancel(); setCode(1); dispose(); } else if(OK.equals(command)) { significance.commit(); PreferenceModelUtilities.getPreferenceModel().save(); setCode(0); dispose(); } } private void _cancel() { RuleSetWrapper[] ruleSets = provider.getRuleSets(); for (int i = 0; i < ruleSets.length; i++) ruleSets[i].cancel(); } class Flipper implements TreeItemSelectionManager.Listener { public void flip(TreeItem item) { ConfigItemWrapper w = (ConfigItemWrapper)item.getData(); ConfigItemWrapper p = w.getParent(); while(p != null) { if(!p.isSelected()) return; p = p.getParent(); } w.flip(); treeViewer.refresh(w); } public boolean isSelected(Object data) { ConfigItemWrapper w = (ConfigItemWrapper)data; return w.isSelected(); } } }