/*******************************************************************************
* 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);
}
}