Java tutorial
/***************************************************************************** * 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) { } }