/*******************************************************************************
* 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.preferences;
import java.util.List;
import org.eclipse.ui.IWorkbench;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Composite;
import org.jboss.tools.common.model.ui.attribute.XAttributeSupport;
import org.jboss.tools.common.model.ui.attribute.adapter.IModelPropertyEditorAdapter;
import org.jboss.tools.common.model.ui.util.ModelUtilities;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.jboss.tools.common.meta.action.XEntityData;
import org.jboss.tools.common.meta.key.WizardKeys;
import org.jboss.tools.common.model.XModel;
import org.jboss.tools.common.model.XModelObject;
import org.jboss.tools.common.model.options.impl.SharableElementImpl;
public class XMOBasedPreferencesPage extends PreferencePage implements IPreferencePageExt, IWorkbenchPreferencePage{
public Composite control;
protected XModel preferenceModel = ModelUtilities.getPreferenceModel();
protected XAttributeSupport support;
protected XModelObject object;
String path;
public XMOBasedPreferencesPage(XModelObject xmo) {
this(xmo, null);
}
public XMOBasedPreferencesPage(XModelObject xmo, XEntityData data) {
object = xmo;
path = xmo.getPath();
support = new XAttributeSupport();
if(data == null) support.init(xmo); else support.init(xmo, data, true);
support.setAutoStore(false);
}
public void dispose() {
super.dispose();
if (support!=null) support.dispose();
support = null;
}
public String getTitle() {
String value = support.getTitle();
if(object != null) {
String s = WizardKeys.getVisualListValue(object.getModelEntity().getAttribute("name"), value); //$NON-NLS-1$
if(s != null) {
return s;
}
}
return value;
}
public void init(IWorkbench workbench) {
}
public Control createContents(Composite parent) {
control = support.createControl(parent);
return control;
}
public boolean isValid() {
return super.isValid();
}
public boolean performCancel() {
support.load();
return super.performCancel();
}
public void performDefaults() {
if(object instanceof SharableElementImpl) {
SharableElementImpl s = (SharableElementImpl)object;
List l = support.getAdapterList();
for (int i = 0; i < l.size(); i++) {
IModelPropertyEditorAdapter a = (IModelPropertyEditorAdapter)l.get(i);
String n = a.getAttribute().getName();
String v = s.getDefaultValue(n);
if(v != null && v.length() > 0) a.setValue(v);
}
}
super.performDefaults();
}
/**
* @see org.eclipse.jface.dialogs.IDialogPage#performHelp()
*/
public void performHelp() {
}
/**
* @see org.eclipse.jface.preference.IPreferencePage#performOk()
*/
public boolean performOk() {
support.store();
support.save();
return true;
}
public void initPageProperties() {
}
public final XAttributeSupport getAttributeSupport() {
return support;
}
public final XModelObject getObject() {
return object;
}
public final XAttributeSupport getSupport() {
return support;
}
public final Composite getSupportControl() {
return control;
}
}