/*
* Copyright 2012 PRODYNA AG
*
* Licensed under the Eclipse Public License (EPL), Version 1.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.opensource.org/licenses/eclipse-1.0.php or
* http://www.nabucco.org/License.html
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.nabucco.testautomation.schema.ui.rcp.list.config.view;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.nabucco.framework.plugin.base.component.list.view.NabuccoAbstractListLayouter;
import org.nabucco.framework.plugin.base.component.list.view.NabuccoDefaultListContentProvider;
import org.nabucco.framework.plugin.base.component.list.view.NabuccoDefaultTableSorter;
import org.nabucco.framework.plugin.base.component.list.view.NabuccoTableColumnInfo;
import org.nabucco.framework.plugin.base.component.list.view.NabuccoTableParameter;
import org.nabucco.framework.plugin.base.component.list.view.NabuccoTableViewer;
import org.nabucco.framework.plugin.base.layout.Layoutable;
import org.nabucco.framework.plugin.base.view.NabuccoFormToolkit;
import org.nabucco.framework.plugin.base.view.NabuccoMessageManager;
import org.nabucco.testautomation.schema.facade.datatype.SchemaConfig;
import org.nabucco.testautomation.schema.ui.rcp.list.config.model.SchemaConfigListViewModel;
import org.nabucco.testautomation.schema.ui.rcp.list.config.view.comparator.SchemaConfigListViewSchemaConfigDescriptionComparator;
import org.nabucco.testautomation.schema.ui.rcp.list.config.view.comparator.SchemaConfigListViewSchemaConfigNameComparator;
import org.nabucco.testautomation.schema.ui.rcp.list.config.view.label.SchemaConfigListViewSchemaConfigDescriptionLabelProvider;
import org.nabucco.testautomation.schema.ui.rcp.list.config.view.label.SchemaConfigListViewSchemaConfigKeyLabelProvider;
import org.nabucco.testautomation.schema.ui.rcp.list.config.view.label.SchemaConfigListViewSchemaConfigNameLabelProvider;
/**
* @author Stefan H�ttenrauch, PRODYNA AG
*
*/
public class SchemaConfigListViewLayouter extends NabuccoAbstractListLayouter<SchemaConfigListViewModel> {
private static final String DESCRIPTION_COLUMN_KEY = "org.nabucco.testautomation.schema.ui.rcp.list.config.view.description";
private static final String NAME_COLUMN_KEY = "org.nabucco.testautomation.schema.ui.rcp.list.config.view.name";
private static final String KEY_COLUMN_KEY = "org.nabucco.testautomation.schema.ui.rcp.list.config.view.key";
/**
* Layouts the table
**/
@Override
public NabuccoTableViewer layout(final Composite parent, final NabuccoMessageManager messageManager,
final SchemaConfigListViewModel model, final Layoutable<SchemaConfigListViewModel> view) {
NabuccoFormToolkit ntk = new NabuccoFormToolkit(parent);
SchemaConfigListViewWidgetFactory widgetFactory = new SchemaConfigListViewWidgetFactory(ntk);
NabuccoTableParameter parameter = new NabuccoTableParameter(new NabuccoDefaultTableSorter<SchemaConfig>(
createComparators()), new SchemaConfigListViewTableFilter(), new NabuccoDefaultListContentProvider(
model), createTableColumnInfo(), getDoubleClickCommand(view.getManagedFormViewPart()));
return widgetFactory.createTable(parent, parameter, model);
}
private List<Comparator<SchemaConfig>> createComparators() {
List<Comparator<SchemaConfig>> comparators = new ArrayList<Comparator<SchemaConfig>>();
comparators.add(new SchemaConfigListViewSchemaConfigNameComparator());
comparators.add(new SchemaConfigListViewSchemaConfigDescriptionComparator());
return comparators;
}
/**
* Creates needed tables.
*
* @return table columns
*/
private NabuccoTableColumnInfo[] createTableColumnInfo() {
NabuccoTableColumnInfo col1 = new NabuccoTableColumnInfo(KEY_COLUMN_KEY, KEY_COLUMN_KEY, 200, SWT.LEFT,
SWT.CENTER, new SchemaConfigListViewSchemaConfigKeyLabelProvider());
col1.setHidable(false);
NabuccoTableColumnInfo col2 = new NabuccoTableColumnInfo(NAME_COLUMN_KEY, NAME_COLUMN_KEY, 400, SWT.LEFT,
SWT.CENTER, new SchemaConfigListViewSchemaConfigNameLabelProvider());
col2.setHidable(false);
NabuccoTableColumnInfo col3 = new NabuccoTableColumnInfo(DESCRIPTION_COLUMN_KEY, DESCRIPTION_COLUMN_KEY, 400,
SWT.LEFT, SWT.LEFT, new SchemaConfigListViewSchemaConfigDescriptionLabelProvider());
return new NabuccoTableColumnInfo[] { col1, col2, col3, };
}
}