/* * JBoss, Home of Professional Open Source * Copyright 2005, JBoss Inc., and individual contributors as indicated * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jbpm.gd.jpdl.prefs; import java.util.Iterator; import java.util.Map; import java.util.Set; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.jface.viewers.ColumnWeightData; 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.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.TableItem; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import org.jboss.tools.jbpm.util.AutoResizeTableLayout; import org.jbpm.gd.jpdl.Constants; import org.jbpm.gd.jpdl.Plugin; import org.jbpm.gd.jpdl.util.AssignmentTypeHelper; public class AssignmentTypesPage extends PreferencePage implements IWorkbenchPreferencePage, Constants { Table assignmentTypesTable; public AssignmentTypesPage() { super(); setPreferenceStore(Plugin.getDefault().getPreferenceStore()); } protected Control createContents(Composite parent) { Composite clientArea = createClientArea(parent); createAssignmentTypesTable(clientArea); return null; } private void createAssignmentTypesTable(Composite parent) { assignmentTypesTable = new Table(parent, SWT.CHECK | SWT.V_SCROLL | SWT.BORDER); assignmentTypesTable.setLinesVisible(true); assignmentTypesTable.setHeaderVisible(true); AutoResizeTableLayout layout = new AutoResizeTableLayout(assignmentTypesTable); TableColumn labelColumn = new TableColumn(assignmentTypesTable, SWT.LEFT); labelColumn.setText("Label"); ColumnWeightData labelColumnData = new ColumnWeightData(30); layout.addColumnData(labelColumnData); TableColumn idColumn = new TableColumn(assignmentTypesTable, SWT.LEFT); idColumn.setText("Id"); ColumnWeightData idColumnData = new ColumnWeightData(30); layout.addColumnData(idColumnData); TableColumn targetClassColumn = new TableColumn(assignmentTypesTable, SWT.LEFT); targetClassColumn.setText("Target Class"); ColumnWeightData targetClassColumnData = new ColumnWeightData(30); layout.addColumnData(targetClassColumnData); GridData gridData = new GridData(GridData.FILL_HORIZONTAL); gridData.horizontalSpan = 2; assignmentTypesTable.setLayoutData(gridData); Map assignmentTypeMap = AssignmentTypeHelper.getLabelMap(); Iterator mapIterator = assignmentTypeMap.keySet().iterator(); while (mapIterator.hasNext()) { String label = (String)mapIterator.next(); Iterator setIterator = ((Set)assignmentTypeMap.get(label)).iterator(); while (setIterator.hasNext()) { IConfigurationElement element = (IConfigurationElement)setIterator.next(); TableItem item = new TableItem(assignmentTypesTable, SWT.NORMAL); item.setData(element); item.setText(0, label); item.setText(1, element.getAttribute("id")); item.setText(2, element.getAttribute("input")); boolean disabled = getPreferenceStore().getBoolean(getPreferencesKey(element)); item.setChecked(!disabled); } } } private String getPreferencesKey(IConfigurationElement element) { return "assignmentType(" + element.getAttribute("id") + ").disabled"; } private Composite createClientArea(Composite parent) { Composite clientArea = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(); layout.numColumns = 2; clientArea.setLayout(layout); GridData gridData = new GridData(GridData.FILL_BOTH); clientArea.setLayoutData(gridData); return clientArea; } public void init(IWorkbench workbench) { } public boolean performOk() { TableItem[] items = assignmentTypesTable.getItems(); for (int i = 0; i < items.length; i++) { getPreferenceStore().setValue( getPreferencesKey((IConfigurationElement)items[i].getData()), !items[i].getChecked()); } return true; } public void performDefaults() { TableItem[] items = assignmentTypesTable.getItems(); for (int i = 0; i < items.length; i++) { items[i].setChecked(true); getPreferenceStore().setValue( getPreferencesKey((IConfigurationElement)items[i].getData()), !items[i].getChecked()); } } }