/*****************************************************************************
* Copyright (c) 2006-2008 g-Eclipse Consortium
* All rights reserved. This program and the accompanying materials
* are 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
*
* Initial development of the original code was made for the
* g-Eclipse project founded by European Union
* project number: FP6-IST-034327 http://www.geclipse.eu/
*
* Contributors:
* Pawel Wolniewicz
*****************************************************************************/
package eu.geclipse.ui.internal.preference;
import org.eclipse.jface.dialogs.MessageDialogWithToggle;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.RadioGroupFieldEditor;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IPerspectiveDescriptor;
import org.eclipse.ui.IPerspectiveRegistry;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.PlatformUI;
import eu.geclipse.ui.internal.Activator;
public class PerspectivePreferencePage extends FieldEditorPreferencePage
implements IWorkbenchPreferencePage
{
public static final String KEY_NOT_SWITCH_FROM_GECLIPSE_PERSPECTIVE = "NotSwitchFromGEclipsePerspectives"; //$NON-NLS-1$
public static final String KEY_REMEMBER_SWITCHING = "RememberSwitchingPerspective"; //$NON-NLS-1$
public static final String KEY_DEFAULT_PERSPECTIVE = "DefaultPerspective"; //$NON-NLS-1$
/**
* Constructor for Jobs Preferences page
*/
public PerspectivePreferencePage() {
super( FieldEditorPreferencePage.GRID );
IPreferenceStore preferenceStore = Activator.getDefault()
.getPreferenceStore();
setPreferenceStore( preferenceStore );
setDescription( "These settings control perspectives for running grid projects. A perspective can automatically open when new grid project is created." );
}
@Override
protected void createFieldEditors() {
ImageDescriptor userPerspectiveImage=null;
ImageDescriptor operatorPerspectiveImage=null;
ImageDescriptor developerPerspectiveImage=null;
RadioGroupFieldEditor editor = new RadioGroupFieldEditor( KEY_REMEMBER_SWITCHING,
"Open a g-Eclipse perspective after creating a Cloud/Grid Project",
3,
new String[][]{
{
"Always",
MessageDialogWithToggle.ALWAYS
},
{
"Never",
MessageDialogWithToggle.NEVER
},
{
"Prompt",
MessageDialogWithToggle.PROMPT
},
},
getFieldEditorParent(),
true );
addField( editor );
IPerspectiveRegistry reg =
PlatformUI.getWorkbench().getPerspectiveRegistry();
String[][] labels=new String[][]{
{
"Grid User Perspective",
Activator.ID_USER_PERSPECTIVE
},
{
"Grid Operator Perspective",
Activator.ID_OPERATOR_PERSPECTIVE
},
{
"Grid Developer Perspective",
Activator.ID_DEVELOPER_PERSPECTIVE
}};
IPerspectiveDescriptor p;
p = reg.findPerspectiveWithId( Activator.ID_USER_PERSPECTIVE );
if(p!=null){
labels[0][0]=p.getLabel();
userPerspectiveImage = p.getImageDescriptor();
}
p = reg.findPerspectiveWithId( Activator.ID_OPERATOR_PERSPECTIVE );
if(p!=null){
labels[1][0]=p.getLabel();
operatorPerspectiveImage = p.getImageDescriptor();
}
p = reg.findPerspectiveWithId( Activator.ID_DEVELOPER_PERSPECTIVE );
if(p!=null){
labels[2][0]=p.getLabel();
developerPerspectiveImage = p.getImageDescriptor();
}
editor = new RadioGroupFieldEditor( KEY_DEFAULT_PERSPECTIVE,
"Choose perspective to open for new Cloud/Grid Projects",
1,
labels,
getFieldEditorParent(),
true );
addField( editor );
//add perspective images
Control[] children = editor.getRadioBoxControl( getFieldEditorParent() ).getChildren();
if(userPerspectiveImage!=null && children[0]!=null && children[0] instanceof Button){
((Button)children[0]).setImage( userPerspectiveImage.createImage() );
}
if(operatorPerspectiveImage!=null && children[1]!=null && children[1] instanceof Button){
((Button)children[1]).setImage( operatorPerspectiveImage.createImage() );
}
if(developerPerspectiveImage!=null && children[2]!=null && children[2] instanceof Button){
((Button)children[2]).setImage( developerPerspectiveImage.createImage() );
}
BooleanFieldEditor bfe=new BooleanFieldEditor(KEY_NOT_SWITCH_FROM_GECLIPSE_PERSPECTIVE, "Do not switch from other g-Eclipse perspectives (User, Operator or Developer)",getFieldEditorParent());
addField(bfe);
}
public void init( final IWorkbench workbench ) {
}
}