+++ /dev/null
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation 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:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package net.sourceforge.phpdt.internal.ui.preferences;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import net.sourceforge.phpdt.internal.ui.text.folding.JavaFoldingStructureProviderDescriptor;
-import net.sourceforge.phpdt.internal.ui.text.folding.JavaFoldingStructureProviderRegistry;
-import net.sourceforge.phpdt.internal.ui.util.PixelConverter;
-import net.sourceforge.phpdt.ui.PreferenceConstants;
-import net.sourceforge.phpdt.ui.text.folding.IJavaFoldingPreferenceBlock;
-//import net.sourceforge.phpeclipse.PHPeclipsePlugin;
-import net.sourceforge.phpeclipse.ui.WebUI;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-//incastrix
-//import org.eclipse.jface.text.Assert;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.viewers.ComboViewer;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StackLayout;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-
-/**
- * Configures Java Editor folding preferences.
- *
- * @since 3.0
- */
-class FoldingConfigurationBlock {
-
- private static class ErrorPreferences implements
- IJavaFoldingPreferenceBlock {
- private String fMessage;
-
- protected ErrorPreferences(String message) {
- fMessage = message;
- }
-
- /*
- * @see net.sourceforge.phpdt.internal.ui.text.folding.IJavaFoldingPreferences#createControl(org.eclipse.swt.widgets.Group)
- */
- public Control createControl(Composite composite) {
- Composite inner = new Composite(composite, SWT.NONE);
- inner.setLayout(new FillLayout(SWT.VERTICAL));
-
- Label label = new Label(inner, SWT.CENTER);
- label.setText(fMessage);
-
- return inner;
- }
-
- public void initialize() {
- }
-
- public void performOk() {
- }
-
- public void performDefaults() {
- }
-
- public void dispose() {
- }
-
- }
-
- /** The overlay preference store. */
- private final OverlayPreferenceStore fStore;
-
- /* The controls */
- private Combo fProviderCombo;
-
- private Button fFoldingCheckbox;
-
- private ComboViewer fProviderViewer;
-
- private Map fProviderDescriptors;
-
- private Composite fGroup;
-
- private Map fProviderPreferences;
-
- private Map fProviderControls;
-
- private StackLayout fStackLayout;
-
- public FoldingConfigurationBlock(OverlayPreferenceStore store) {
- Assert.isNotNull(store);
- fStore = store;
- fStore.addKeys(createOverlayStoreKeys());
- fProviderDescriptors = createListModel();
- fProviderPreferences = new HashMap();
- fProviderControls = new HashMap();
- }
-
- private Map createListModel() {
- JavaFoldingStructureProviderRegistry reg = WebUI
- .getDefault().getFoldingStructureProviderRegistry();
- reg.reloadExtensions();
- JavaFoldingStructureProviderDescriptor[] descs = reg
- .getFoldingProviderDescriptors();
- Map map = new HashMap();
- for (int i = 0; i < descs.length; i++) {
- map.put(descs[i].getId(), descs[i]);
- }
- return map;
- }
-
- private OverlayPreferenceStore.OverlayKey[] createOverlayStoreKeys() {
-
- ArrayList overlayKeys = new ArrayList();
-
- overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
- OverlayPreferenceStore.BOOLEAN,
- PreferenceConstants.EDITOR_FOLDING_ENABLED));
- overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
- OverlayPreferenceStore.STRING,
- PreferenceConstants.EDITOR_FOLDING_PROVIDER));
-
- OverlayPreferenceStore.OverlayKey[] keys = new OverlayPreferenceStore.OverlayKey[overlayKeys
- .size()];
- overlayKeys.toArray(keys);
- return keys;
- }
-
- /**
- * Creates page for folding preferences.
- *
- * @param parent
- * the parent composite
- * @return the control for the preference page
- */
- Control createControl(Composite parent) {
-
- Composite composite = new Composite(parent, SWT.NULL);
- // assume parent page uses griddata
- GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_CENTER
- | GridData.VERTICAL_ALIGN_FILL);
- composite.setLayoutData(gd);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- PixelConverter pc = new PixelConverter(composite);
- layout.verticalSpacing = pc.convertHeightInCharsToPixels(1) / 2;
- composite.setLayout(layout);
-
- /* check box for new editors */
- fFoldingCheckbox = new Button(composite, SWT.CHECK);
- fFoldingCheckbox.setText(PreferencesMessages
- .getString("FoldingConfigurationBlock.enable")); //$NON-NLS-1$
- gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING
- | GridData.VERTICAL_ALIGN_BEGINNING);
- fFoldingCheckbox.setLayoutData(gd);
- fFoldingCheckbox.addSelectionListener(new SelectionListener() {
- public void widgetSelected(SelectionEvent e) {
- boolean enabled = fFoldingCheckbox.getSelection();
- fStore.setValue(PreferenceConstants.EDITOR_FOLDING_ENABLED,
- enabled);
- updateCheckboxDependencies();
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- }
- });
-
- Label label = new Label(composite, SWT.CENTER);
- gd = new GridData(GridData.FILL_HORIZONTAL
- | GridData.VERTICAL_ALIGN_BEGINNING);
- label.setLayoutData(gd);
-
- /* list */
- Composite comboComp = new Composite(composite, SWT.NONE);
- gd = new GridData(GridData.FILL_HORIZONTAL
- | GridData.VERTICAL_ALIGN_BEGINNING);
- GridLayout gridLayout = new GridLayout(2, false);
- gridLayout.marginWidth = 0;
- comboComp.setLayout(gridLayout);
-
- Label comboLabel = new Label(comboComp, SWT.CENTER);
- gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING
- | GridData.VERTICAL_ALIGN_CENTER);
- comboLabel.setLayoutData(gd);
- comboLabel.setText(PreferencesMessages
- .getString("FoldingConfigurationBlock.combo_caption")); //$NON-NLS-1$
-
- label = new Label(composite, SWT.CENTER);
- gd = new GridData(GridData.FILL_HORIZONTAL
- | GridData.VERTICAL_ALIGN_BEGINNING);
- label.setLayoutData(gd);
-
- fProviderCombo = new Combo(comboComp, SWT.READ_ONLY | SWT.DROP_DOWN);
- gd = new GridData(GridData.HORIZONTAL_ALIGN_END
- | GridData.VERTICAL_ALIGN_CENTER);
- fProviderCombo.setLayoutData(gd);
-
- /* list viewer */
- fProviderViewer = new ComboViewer(fProviderCombo);
- fProviderViewer.setContentProvider(new IStructuredContentProvider() {
-
- /*
- * @see org.eclipse.jface.viewers.IContentProvider#dispose()
- */
- public void dispose() {
- }
-
- /*
- * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
- * java.lang.Object, java.lang.Object)
- */
- public void inputChanged(Viewer viewer, Object oldInput,
- Object newInput) {
- }
-
- /*
- * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
- */
- public Object[] getElements(Object inputElement) {
- return fProviderDescriptors.values().toArray();
- }
- });
- fProviderViewer.setLabelProvider(new LabelProvider() {
- /*
- * @see org.eclipse.jface.viewers.LabelProvider#getImage(java.lang.Object)
- */
- public Image getImage(Object element) {
- return null;
- }
-
- /*
- * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
- */
- public String getText(Object element) {
- return ((JavaFoldingStructureProviderDescriptor) element)
- .getName();
- }
- });
- fProviderViewer
- .addSelectionChangedListener(new ISelectionChangedListener() {
-
- public void selectionChanged(SelectionChangedEvent event) {
- IStructuredSelection sel = (IStructuredSelection) event
- .getSelection();
- if (!sel.isEmpty()) {
- fStore
- .setValue(
- PreferenceConstants.EDITOR_FOLDING_PROVIDER,
- ((JavaFoldingStructureProviderDescriptor) sel
- .getFirstElement()).getId());
- updateListDependencies();
- }
- }
- });
- fProviderViewer.setInput(fProviderDescriptors);
- fProviderViewer.refresh();
-
- Composite groupComp = new Composite(composite, SWT.NONE);
- gd = new GridData(GridData.FILL_BOTH);
- gd.horizontalSpan = 2;
- groupComp.setLayoutData(gd);
- gridLayout = new GridLayout(1, false);
- gridLayout.marginWidth = 0;
- groupComp.setLayout(gridLayout);
-
- /* contributed provider preferences. */
- fGroup = new Composite(groupComp, SWT.NONE);
- gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING
- | GridData.VERTICAL_ALIGN_BEGINNING);
- fGroup.setLayoutData(gd);
- fStackLayout = new StackLayout();
- fGroup.setLayout(fStackLayout);
-
- return composite;
- }
-
- private void updateCheckboxDependencies() {
- }
-
- void updateListDependencies() {
- String id = fStore
- .getString(PreferenceConstants.EDITOR_FOLDING_PROVIDER);
- JavaFoldingStructureProviderDescriptor desc = (JavaFoldingStructureProviderDescriptor) fProviderDescriptors
- .get(id);
- IJavaFoldingPreferenceBlock prefs;
-
- if (desc == null) {
- // safety in case there is no such descriptor
- String message = PreferencesMessages
- .getString("FoldingConfigurationBlock.error.not_exist"); //$NON-NLS-1$
- WebUI.log(new Status(IStatus.WARNING, WebUI
- .getPluginId(), IStatus.OK, message, null));
- prefs = new ErrorPreferences(message);
- } else {
- prefs = (IJavaFoldingPreferenceBlock) fProviderPreferences.get(id);
- if (prefs == null) {
- try {
- prefs = desc.createPreferences();
- fProviderPreferences.put(id, prefs);
- } catch (CoreException e) {
- WebUI.log(e);
- prefs = new ErrorPreferences(e.getLocalizedMessage());
- }
- }
- }
-
- Control control = (Control) fProviderControls.get(id);
- if (control == null) {
- control = prefs.createControl(fGroup);
- if (control == null) {
- String message = PreferencesMessages
- .getString("FoldingConfigurationBlock.info.no_preferences"); //$NON-NLS-1$
- control = new ErrorPreferences(message).createControl(fGroup);
- } else {
- fProviderControls.put(id, control);
- }
- }
- fStackLayout.topControl = control;
- control.pack();
- fGroup.layout();
- fGroup.getParent().layout();
-
- prefs.initialize();
- }
-
- void initialize() {
- restoreFromPreferences();
- }
-
- void performOk() {
- for (Iterator it = fProviderPreferences.values().iterator(); it
- .hasNext();) {
- IJavaFoldingPreferenceBlock prefs = (IJavaFoldingPreferenceBlock) it
- .next();
- prefs.performOk();
- }
- }
-
- void performDefaults() {
- restoreFromPreferences();
- for (Iterator it = fProviderPreferences.values().iterator(); it
- .hasNext();) {
- IJavaFoldingPreferenceBlock prefs = (IJavaFoldingPreferenceBlock) it
- .next();
- prefs.performDefaults();
- }
- }
-
- void dispose() {
- for (Iterator it = fProviderPreferences.values().iterator(); it
- .hasNext();) {
- IJavaFoldingPreferenceBlock prefs = (IJavaFoldingPreferenceBlock) it
- .next();
- prefs.dispose();
- }
- }
-
- private void restoreFromPreferences() {
- boolean enabled = fStore
- .getBoolean(PreferenceConstants.EDITOR_FOLDING_ENABLED);
- fFoldingCheckbox.setSelection(enabled);
- updateCheckboxDependencies();
-
- String id = fStore
- .getString(PreferenceConstants.EDITOR_FOLDING_PROVIDER);
- Object provider = fProviderDescriptors.get(id);
- if (provider != null) {
- fProviderViewer.setSelection(new StructuredSelection(provider),
- true);
- updateListDependencies();
- }
- }
-}