/******************************************************************************* * Copyright (c) 2009 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: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.smooks.configuration.editors; import java.util.Collection; import java.util.List; import org.eclipse.emf.common.util.Diagnostic; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.swt.layout.GridLayout; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.editor.FormEditor; import org.eclipse.ui.forms.editor.FormPage; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ScrolledForm; import org.jboss.tools.smooks.configuration.validate.ISmooksModelValidateListener; import org.jboss.tools.smooks.editor.ISmooksModelProvider; import org.jboss.tools.smooks.editor.ISourceSynchronizeListener; /** * @author Dart Peng (dpeng@redhat.com) Date Apr 1, 2009 */ public class SmooksConfigurationFormPage extends FormPage implements ISmooksModelValidateListener, ISourceSynchronizeListener { private SmooksMasterDetailBlock masterDetailBlock = null; public SmooksConfigurationFormPage(FormEditor editor, String id, String title) { super(editor, id, title); } public SmooksConfigurationFormPage(String id, String title) { super(id, title); } protected String getMainSectionTitle() { return null; } protected String getMainSectionDescription() { return null; } @Override protected void createFormContent(IManagedForm managedForm) { final ScrolledForm form = managedForm.getForm(); FormToolkit toolkit = managedForm.getToolkit(); toolkit.decorateFormHeading(form.getForm()); setPageTitle(form); // create master details UI createMasterDetailBlock(managedForm); GridLayout gridLayout = new GridLayout(); gridLayout.marginHeight = 13; // gridLayout.numColumns = 2; // gridLayout.makeColumnsEqualWidth = true; form.getBody().setLayout(gridLayout); } protected void setPageTitle(ScrolledForm form) { String title = getTitle(); form.setText(title); } protected SmooksMasterDetailBlock createSmooksMasterDetailsBlock() { return new SmooksMasterDetailBlock(getEditor(), (AdapterFactoryEditingDomain) ((SmooksMultiFormEditor) getEditor()).getEditingDomain()); } protected void createMasterDetailBlock(IManagedForm managedForm) { masterDetailBlock = createSmooksMasterDetailsBlock(); ViewerFilter[] filters = createViewerFilters(); masterDetailBlock.setViewerFilters(filters); masterDetailBlock.setMainSectionDescription(getMainSectionDescription()); masterDetailBlock.setMainSectionTitle(getMainSectionTitle()); masterDetailBlock.setNewSmooksElementTitle(getNewSmooksElementTitle()); masterDetailBlock.setNewSmooksElementDescription(getNewSmooksElementDescription()); masterDetailBlock.createContent(managedForm); } protected String getNewSmooksElementTitle() { return null; } protected String getNewSmooksElementDescription() { return null; } protected ViewerFilter[] createViewerFilters() { return new ViewerFilter[] { new TextEObjectModelFilter() }; } // protected SmooksGraphicsExtType getSmooksGraphicsExtType() { // SmooksGraphicsExtType extType = ((ISmooksModelProvider) getEditor()).getSmooksGraphicsExt(); // return extType; // } @Override public Object getAdapter(Class clazz){ if(clazz == ISmooksModelProvider.class){ return (ISmooksModelProvider)getEditor(); } return super.getAdapter(clazz); } public void setSmooksModel(Object model) { if (masterDetailBlock != null) { masterDetailBlock.setSmooksModel(model); } } protected void showInputDataWizard() { // StructuredDataSelectionWizard wizard = new StructuredDataSelectionWizard(); // wizard.setInput(getEditorInput()); // wizard.setSite(getEditorSite()); // wizard.setForcePreviousAndNextButtons(true); // StructuredDataSelectionWizardDailog dialog = new StructuredDataSelectionWizardDailog( // getEditorSite().getShell(), wizard, getSmooksGraphicsExtType()); // if (dialog.show() == Dialog.OK) { // SmooksGraphicsExtType extType = getSmooksGraphicsExtType(); // String type = dialog.getType(); // String path = dialog.getPath(); // Properties pros = dialog.getProperties(); // SmooksUIUtils.recordInputDataInfomation(((SmooksMultiFormEditor) getEditor()).getEditingDomain(), null, // extType, type, path, pros); // } } public void setSelectionToViewer(final Collection<?> collection) { if (masterDetailBlock != null && masterDetailBlock.getSmooksTreeViewer() != null) { // I don't know if this should be run this deferred // because we might have to give the editor a chance to process the // viewer update events // and hence to update the views first. // // final TreeViewer viewer = masterDetailBlock.getSmooksTreeViewer(); Runnable runnable = new Runnable() { public void run() { // Try to select the items in the current content viewer of // the editor. // if (viewer != null) { viewer.setSelection(new StructuredSelection(collection.toArray()), true); } } }; runnable.run(); } } public void validateEnd(List<Diagnostic> diagnosticResult) { if (masterDetailBlock != null) masterDetailBlock.refreshSmooksTreeViewer(); } public void validateStart() { } // public void inputTypeChanged(SmooksGraphicsExtType extType) { // } public void sourceChange(Object model) { this.setSmooksModel(model); } // public void graphChanged(SmooksGraphicsExtType extType) { // // TODO Auto-generated method stub // // } public void graphPropertyChange(EStructuralFeature featre, Object value) { // TODO Auto-generated method stub } }