/******************************************************************************* * 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.model.ui.templates.preferences; import java.util.*; import org.jboss.tools.common.model.ui.attribute.adapter.*; import org.jboss.tools.common.model.ui.attribute.editor.*; import org.eclipse.jface.viewers.*; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; import org.jboss.tools.common.model.XModel; import org.jboss.tools.common.model.ui.templates.configuration.*; import org.jboss.tools.common.model.ui.templates.model.*; public class TemplateComponent { private MetaConfiguration configuration; // private XModel model; boolean isGlobal = true; // allow override CheckBoxEditor allowOverrideEditor; CheckBoxEditor qwe; DefaultValueAdapter allowOverrideAdapter; // template groups TableStructuredEditor templateGroupsEditor; DefaultTableStructuredAdapter templateGroupsAdapter; // axis TableStructuredEditor axisEditor; DefaultTableStructuredAdapter axisAdapter; ClassTemplateComponent templateComponent = new ClassTemplateComponent(); public void setGlobal(boolean b) { isGlobal = b; } private Control[] getControls(Composite composite, PropertyEditor editor) { return ((IFieldEditor)editor.getFieldEditor(composite)).getControls(composite); } protected Control createContents(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); GridLayout gridLayout = new GridLayout(3, Boolean.FALSE.booleanValue()); composite.setLayout(gridLayout); GridData gd; Control[] control; // checkbox if(!isGlobal) { //.getString CHECKBOX_LABEL allowOverrideEditor.setLabelText(Messages.CHECKBOX_LABEL); allowOverrideAdapter.setValue("" + MetaClassTemplateHelper.instance. isProjectOverrideTemplates()); //$NON-NLS-1$ control = getControls(composite, allowOverrideEditor); control[0].dispose(); // dispose empty label gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 3; control[1].setLayoutData(gd); } // list of templates templateGroupsEditor.setLabelText(Messages.ClassTemplateComponent_LIST_OF_TEMPLATE_GROUPS); control = getControls(composite, templateGroupsEditor); control[0].dispose(); // dispose empty label gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 3; gd.heightHint = 100; control[1].setLayoutData(gd); // axis axisEditor.setLabelText("Axis."); control = getControls(composite, axisEditor); control[0].dispose(); // dispose empty label gd = new GridData(GridData.FILL_VERTICAL); gd.widthHint = 150; gd.verticalSpan = 3; control[1].setLayoutData(gd); templateComponent.createContents(composite); return composite; } public void setConfiguration(MetaConfiguration configuration, XModel model) { this.configuration = configuration; // this.model = model; // allow override if(!isGlobal) { allowOverrideEditor = new CheckBoxEditor(); allowOverrideAdapter = new DefaultValueAdapter(); allowOverrideEditor.setInput(allowOverrideAdapter); } // template groups templateGroupsEditor = new TableStructuredEditor(); templateGroupsAdapter = new DefaultTableStructuredAdapter(); templateGroupsAdapter.addColumnDescription(new ColumnDescription("Groups", null, 100, SWT.LEFT, true, null)); Collection col = configuration.getMetaTemplateGroups(); templateGroupsAdapter.setValue(col.toArray()); templateGroupsAdapter.setTableLabelProvider(new TableLabelProvider()); templateGroupsAdapter.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { if (event.getSelection() instanceof StructuredSelection) { StructuredSelection structuredSelection = (StructuredSelection)event.getSelection(); Object object = structuredSelection.getFirstElement(); setSelection(object); } } }); templateGroupsEditor.setInput(templateGroupsAdapter); // axis axisEditor = new TableStructuredEditor(); axisAdapter = new DefaultTableStructuredAdapter(); axisAdapter.addColumnDescription(new ColumnDescription("Axis", null, 100, SWT.LEFT, true, null)); axisAdapter.setTableLabelProvider(new TableLabelProvider()); axisAdapter.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { if (event.getSelection() instanceof StructuredSelection) { StructuredSelection structuredSelection = (StructuredSelection)event.getSelection(); Object object = structuredSelection.getFirstElement(); setSelection(object); } } }); axisEditor.setInput(axisAdapter); templateComponent.setModel(model); } private void setSelection(Object o) { if(o == null) { templateComponent.setSelectedTemplate(null); } else if (o instanceof MetaGroup) { axisAdapter.setValue(((MetaGroup)o).getTemplates().toArray()); } else if (o instanceof MetaClassTemplate) { templateComponent.setSelectedTemplate((MetaClassTemplate)o); } } protected void performApply() { if(!isGlobal) { String s = allowOverrideAdapter.getValue().toString(); MetaClassTemplateHelper.instance.setProjectOverrideTemplates("true".equalsIgnoreCase(s)); //$NON-NLS-1$ } configuration.save(); } protected void performDefaults() { configuration.loadFromParent(2); if(templateComponent != null) templateComponent.setSelectedTemplate(templateComponent.selectedTemplate); } }