/*******************************************************************************
* 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.configuration.editors;
import java.util.Iterator;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.jboss.tools.smooks.configuration.editors.utils.SmooksUIUtils;
import org.jboss.tools.smooks.editor.ISmooksModelProvider;
import org.jboss.tools.smooks.model.smooks.AbstractReader;
import org.jboss.tools.smooks.model.smooks.AbstractResourceConfig;
import org.jboss.tools.smooks.model.smooks.ConditionsType;
import org.jboss.tools.smooks.model.smooks.ParamsType;
import org.jboss.tools.smooks.model.smooks.ProfilesType;
import org.jboss.tools.smooks.model.smooks.SmooksResourceListType;
/**
* @author Dart
*
*/
public class SmooksConfigurationResourceConfigPage extends SmooksConfigurationFormPage {
public SmooksConfigurationResourceConfigPage(FormEditor editor, String id, String title) {
super(editor, id, title);
}
public SmooksConfigurationResourceConfigPage(String id, String title) {
super(id, title);
}
@Override
protected void createMasterDetailBlock(IManagedForm managedForm) {
// TODO Auto-generated method stub
super.createMasterDetailBlock(managedForm);
}
@Override
protected SmooksMasterDetailBlock createSmooksMasterDetailsBlock() {
return new SmooksMasterDetailBlock(getEditor(),
(AdapterFactoryEditingDomain) ((SmooksMultiFormEditor) getEditor()).getEditingDomain()) {
@Override
protected Object getEmptyDefaultSelection(EObject smooksTreeViewerInput) {
List<EObject> contents = smooksTreeViewerInput.eContents();
for (Iterator<?> iterator = contents.iterator(); iterator.hasNext();) {
EObject eObject = (EObject) iterator.next();
if (smooksTreeViewerInput instanceof SmooksResourceListType
&& eObject instanceof AbstractResourceConfig) {
return eObject;
}
}
return super.getEmptyDefaultSelection(smooksTreeViewerInput);
}
};
}
@Override
protected ViewerFilter[] createViewerFilters() {
ViewerFilter filter = new ViewerFilter() {
@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
Object obj = element;
obj = AdapterFactoryEditingDomain.unwrap(obj);
if (obj instanceof EObject) {
if (obj instanceof ParamsType) {
return false;
}
if (obj instanceof ConditionsType) {
return false;
}
if (obj instanceof AbstractReader) {
return false;
}
if (obj instanceof ProfilesType) {
return false;
}
ISmooksModelProvider provider = (ISmooksModelProvider) getAdapter(ISmooksModelProvider.class);
if (provider != null) {
if (SmooksUIUtils.isUnSupportElement(provider.getPlatformVersion(), (EObject) obj)) {
return false;
}
}
}
return true;
}
};
ViewerFilter[] filters = super.createViewerFilters();
ViewerFilter[] newFilters = new ViewerFilter[filters.length + 1];
newFilters[0] = filter;
System.arraycopy(filters, 0, newFilters, 1, filters.length);
return newFilters;
}
@Override
protected void setPageTitle(ScrolledForm form) {
// EObject smooksModel = ((ISmooksModelProvider)
// getEditor()).getSmooksModel();
// if (smooksModel != null) {
// EObject parent = smooksModel;
// while (parent != null) {
// EObject old = parent;
// parent = parent.eContainer();
// if (parent == null) {
// parent = old;
// break;
// }
// }
// if (parent instanceof DocumentRoot) {
// title = "Smooks 1.1 - " + title;
// }
// if (parent instanceof
// org.jboss.tools.smooks10.model.smooks.DocumentRoot) {
// title = "Smooks 1.0 - " + title;
// }
// }
form.setText(Messages.SmooksConfigurationResourceConfigPage_FormTitle);
}
@Override
protected String getNewSmooksElementDescription() {
return super.getNewSmooksElementDescription();
}
@Override
protected String getNewSmooksElementTitle() {
return super.getNewSmooksElementTitle();
}
@Override
protected String getMainSectionDescription() {
return super.getMainSectionDescription();
}
@Override
protected String getMainSectionTitle() {
return Messages.SmooksConfigurationResourceConfigPage_SectionTitle;
}
}