| //------------------------------------------------------------------------------ |
| // Copyright (c) 2005, 2006 IBM Corporation and others. |
| // All rights reserved. This program and the accompanying materials |
| // are 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: |
| // IBM Corporation - initial implementation |
| //------------------------------------------------------------------------------ |
| package org.eclipse.epf.authoring.ui.properties; |
| |
| import java.util.List; |
| |
| import org.eclipse.emf.common.util.BasicEList; |
| import org.eclipse.emf.common.util.EList; |
| import org.eclipse.epf.authoring.ui.editors.ColumnDescriptor; |
| import org.eclipse.epf.authoring.ui.editors.ProcessEditor; |
| import org.eclipse.epf.authoring.ui.preferences.ApplicationPreferenceConstants; |
| import org.eclipse.epf.library.edit.TngAdapterFactory; |
| import org.eclipse.epf.library.edit.util.ConfigurableComposedAdapterFactory; |
| |
| import com.ibm.icu.util.StringTokenizer; |
| |
| |
| /** |
| * The work rollup section for activity |
| * |
| * @author Shilpa Toraskar |
| * @since 1.0 |
| * |
| */ |
| public class ActivityWorkRollupSection extends ActivityRollupSection { |
| |
| /** |
| * @see org.eclipse.epf.authoring.ui.properties.ActivityRollupSection#initAdapterFactory() |
| */ |
| protected void initAdapterFactory() { |
| // get column descriptors |
| columnDescriptors = getColumnDescriptors(); |
| |
| // create adapter factory |
| adapterFactory = TngAdapterFactory.INSTANCE |
| .createWBSComposedAdapterFactory(); |
| |
| if (adapterFactory instanceof ConfigurableComposedAdapterFactory) { |
| ((ConfigurableComposedAdapterFactory) adapterFactory) |
| .setFilter(configurator); |
| } |
| |
| } |
| |
| private ColumnDescriptor[] getColumnDescriptors() { |
| ColumnDescriptor[] descriptors = toColumnDescriptors(store |
| .getString(ApplicationPreferenceConstants.PREF_WBS_COLUMNS)); |
| |
| // don't show column "Predecessors" |
| // |
| int index = -1; |
| for (int i = 0; i < descriptors.length; i++) { |
| if(descriptors[i] == ProcessEditor.COL_DESC_PREDECESSORS) { |
| index = i; |
| break; |
| } |
| } |
| if(index != -1) { |
| ColumnDescriptor[] colDescriptors = new ColumnDescriptor[descriptors.length - 1]; |
| if(index > 0) { |
| System.arraycopy(descriptors, 0, colDescriptors, 0, index); |
| } |
| int len = descriptors.length - 1 - index; |
| if(len > 0) { |
| System.arraycopy(descriptors, index + 1, colDescriptors, index, len); |
| } |
| return colDescriptors; |
| } |
| return descriptors; |
| } |
| |
| /** |
| * Convert string into colum descriptor list |
| * @param str |
| * @return |
| * List of column descriptors |
| */ |
| public static EList toColumnDescriptorList(String str) { |
| EList columnDescriptors = new BasicEList(); |
| StringTokenizer tokens = new StringTokenizer(str, ","); //$NON-NLS-1$ |
| while (tokens.hasMoreTokens()) { |
| String token = tokens.nextToken(); |
| // DON"T PUT INDEX COLUMN |
| if (!(token.equals(ProcessEditor.COL_DESC_ID.id))) { |
| Object columnDescriptor = ProcessEditor.idToColumnDescriptorMap |
| .get(token); |
| if (columnDescriptor != null) { |
| columnDescriptors.add(columnDescriptor); |
| } |
| } |
| } |
| return columnDescriptors; |
| } |
| |
| /** |
| * Convert string into column descriptors |
| * @param str |
| * @return |
| * list of column descriptors |
| */ |
| public static ColumnDescriptor[] toColumnDescriptors(String str) { |
| List list = toColumnDescriptorList(str); |
| ColumnDescriptor[] columns = new ColumnDescriptor[list.size()]; |
| list.toArray(columns); |
| return columns; |
| } |
| |
| /** |
| * @see org.eclipse.epf.authoring.ui.properties.ActivityRollupSection#setSectionLabels() |
| */ |
| protected void setSectionLabels() { |
| section.setText(PropertiesResources.Activity_WorkRollup); |
| section.setDescription(PropertiesResources.Activity_WorkRollupDescription); |
| } |
| |
| } |