/*******************************************************************************
* Copyright (c) 2008 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.editor.propertySections;
import org.eclipse.gef.DefaultEditDomain;
import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
import org.jboss.tools.smooks.editor.ISmooksModelProvider;
import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
import org.jboss.tools.smooks.graphical.editors.SmooksGraphicalEditorPart;
/**
* @author Dart
*
*/
public class AbstractSmooksPropertySection extends AbstractPropertySection {
protected Section createRootSection(TabbedPropertySheetWidgetFactory factory, Composite parent) {
Composite main = factory.createComposite(parent);
FillLayout fill = new FillLayout();
fill.marginHeight = 8;
fill.marginWidth = 8;
main.setLayout(fill);
return factory.createSection(main, Section.TITLE_BAR);
}
protected ISmooksModelProvider getSmooksModelProvider() {
IEditorPart part = getEditorPart();
if(part == null){
part = (IEditorPart)getPart();
}
if (part != null) {
if (part instanceof SmooksGraphicalEditorPart) {
return ((SmooksGraphicalEditorPart) part).getSmooksModelProvider();
}
}
return null;
}
protected GraphicalEditPart getPresentSelectedEditPart() {
IStructuredSelection selection = (IStructuredSelection) this.getSelection();
if(selection == null) return null;
if(selection.size() > 1) return null;
Object obj = selection.getFirstElement();
if (obj != null && obj instanceof GraphicalEditPart) {
return (GraphicalEditPart)obj;
}
return null;
}
protected Object getPresentSelectedModel() {
IStructuredSelection selection = (IStructuredSelection) this.getSelection();
if(selection == null) return null;
if(selection.size() > 1) return null;
Object obj = selection.getFirstElement();
if (obj != null && obj instanceof GraphicalEditPart) {
Object gmodel = ((GraphicalEditPart) obj).getModel();
if (gmodel != null && gmodel instanceof AbstractSmooksGraphicalModel) {
Object data = ((AbstractSmooksGraphicalModel) gmodel).getData();
return data;
}
}
return null;
}
protected Object getPresentSelectedGraphModel() {
IStructuredSelection selection = (IStructuredSelection) this.getSelection();
if(selection == null) return null;
if(selection.size() > 1) return null;
Object obj = selection.getFirstElement();
if (obj != null && obj instanceof GraphicalEditPart) {
Object gmodel = ((GraphicalEditPart) obj).getModel();
return gmodel;
}
return null;
}
protected IEditorPart getEditorPart() {
IStructuredSelection selection = (IStructuredSelection) this.getSelection();
if(selection == null) return null;
Object obj = selection.getFirstElement();
if (obj == null)
return null;
if (obj instanceof GraphicalEditPart) {
GraphicalViewer viewer = (GraphicalViewer) ((GraphicalEditPart) obj).getViewer();
IEditorPart part = ((DefaultEditDomain) viewer.getEditDomain()).getEditorPart();
return part;
}
return null;
}
/* (non-Javadoc)
* @see org.eclipse.ui.views.properties.tabbed.AbstractPropertySection#refresh()
*/
@Override
public void refresh() {
super.refresh();
}
}