X-Git-Url: http://secure.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.css.ui/src/net/sourceforge/phpeclipse/css/ui/internal/properties/CssPropertyPage.java b/archive/net.sourceforge.phpeclipse.css.ui/src/net/sourceforge/phpeclipse/css/ui/internal/properties/CssPropertyPage.java new file mode 100644 index 0000000..024843d --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.css.ui/src/net/sourceforge/phpeclipse/css/ui/internal/properties/CssPropertyPage.java @@ -0,0 +1,197 @@ +/* + * Copyright (c) 2003-2004 Christopher Lenz and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * Christopher Lenz - initial API and implementation + * + * $Id: CssPropertyPage.java,v 1.1 2004-09-02 18:11:49 jsurfer Exp $ + */ + +package net.sourceforge.phpeclipse.css.ui.internal.properties; + +import java.util.Arrays; +import java.util.Comparator; + +import net.sourceforge.phpeclipse.css.core.CssCore; +import net.sourceforge.phpeclipse.css.core.internal.CssCorePreferences; +import net.sourceforge.phpeclipse.css.core.internal.profiles.ProfileManager; +import net.sourceforge.phpeclipse.css.core.profiles.IProfileDescriptor; +import net.sourceforge.phpeclipse.css.core.profiles.IProfileManager; +import net.sourceforge.phpeclipse.css.ui.internal.CssUIMessages; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.Preferences; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Group; +import org.eclipse.ui.dialogs.PropertyPage; + +/** + * Property page for CSS projects and files. + */ +public class CssPropertyPage extends PropertyPage { + + // Instance Variables ------------------------------------------------------ + + private IProfileManager profileManager; + + private boolean useCustomSettings; + private Group profileGroup; + private Button[] profileButtons; + private String selectedProfile; + + // Constructors ------------------------------------------------------------ + + /** + * Constructor. + */ + public CssPropertyPage() { + profileManager = CssCore.getDefault().getProfileManager(); + } + + // PropertyPage Implementation --------------------------------------------- + + /** + * @see org.eclipse.jface.preference.PreferencePage#createContents(Composite) + */ + protected Control createContents(Composite parent) { + + Composite composite = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + composite.setLayout(layout); + + Object element = getElement(); + if (element instanceof IResource) { + IResource resource = (IResource) element; + try { + selectedProfile = resource.getPersistentProperty( + ProfileManager.PROFILE_PROPERTY); + } catch (CoreException e) { + // ignore + } + } + useCustomSettings = (selectedProfile != null); + if (selectedProfile == null) { + selectedProfile = getInheritedProfile(); + } + + Button useInheritedSettingsButton = + new Button(composite, SWT.RADIO | SWT.LEFT); + if (element instanceof IProject) { + useInheritedSettingsButton.setText( + getString("useWorkspaceSettings")); //$NON-NLS-1$ + } else if (element instanceof IResource) { + useInheritedSettingsButton.setText( + getString("useProjectSettings")); //$NON-NLS-1$ + } + useInheritedSettingsButton.setSelection(!useCustomSettings); + Button useCustomSettingsButton = + new Button(composite, SWT.RADIO | SWT.LEFT); + useCustomSettingsButton.setText( + getString("useCustomSettings")); //$NON-NLS-1$ + useCustomSettingsButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent event) { + useCustomSettings = + ((Button) event.widget).getSelection(); + updateProfileGroup(); + } + }); + useCustomSettingsButton.setSelection(useCustomSettings); + + profileGroup = new Group(composite, SWT.SHADOW_ETCHED_IN); + layout = new GridLayout(); + layout.numColumns = 1; + profileGroup.setLayout(layout); + profileGroup.setText(getString("profile")); //$NON-NLS-1$ + + IProfileManager mgr = CssCore.getDefault().getProfileManager(); + IProfileDescriptor[] profiles = mgr.getProfileDescriptors(); + Arrays.sort(profiles, new Comparator() { + public int compare(Object o1, Object o2) { + return ((IProfileDescriptor) o1).getName().compareTo( + ((IProfileDescriptor) o2).getName()); + } + }); + + profileButtons = new Button[profiles.length]; + for (int i = 0; i < profiles.length; i++) { + Button button = new Button(profileGroup, SWT.RADIO | SWT.LEFT); + button.setText(profiles[i].getName()); + button.setData(profiles[i].getId()); + if (profiles[i].getId().equals(selectedProfile)) { + button.setSelection(true); + } + button.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent event) { + selectedProfile = (String) event.widget.getData(); + } + }); + profileButtons[i] = button; + } + updateProfileGroup(); + + return composite; + } + + /** + * @see org.eclipse.jface.preference.IPreferencePage#performOk() + */ + public boolean performOk() { + Object element = getElement(); + if (element instanceof IResource) { + IResource resource = (IResource) element; + if (useCustomSettings) { + profileManager.setProfile(resource, selectedProfile); + } else { + profileManager.setProfile(resource, null); + } + } + return true; + } + + // Private Methods --------------------------------------------------------- + + private String getInheritedProfile() { + Object element = getElement(); + String retVal = null; + if (element instanceof IResource) { + IProject project = ((IResource) element).getProject(); + try { + retVal = project.getPersistentProperty( + ProfileManager.PROFILE_PROPERTY); + } catch (CoreException e) { + // ignore + } + } + if (retVal == null) { + Preferences preferences = + CssCore.getDefault().getPluginPreferences(); + retVal = preferences.getString(CssCorePreferences.PROFILE); + } + return retVal; + } + + private String getString(String key) { + return CssUIMessages.getString("CssPropertyPage." + key); //$NON-NLS-1$ + } + + private void updateProfileGroup() { + profileGroup.setEnabled(useCustomSettings); + for (int i = 0; i < profileButtons.length; i++) { + profileButtons[i].setEnabled(useCustomSettings); + } + } + +}