X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/JavaEditorHoverConfigurationBlock.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/JavaEditorHoverConfigurationBlock.java deleted file mode 100644 index d0aefce..0000000 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/JavaEditorHoverConfigurationBlock.java +++ /dev/null @@ -1,479 +0,0 @@ -/******************************************************************************* - * 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.HashMap; -import java.util.StringTokenizer; - -import net.sourceforge.phpdt.internal.ui.dialogs.StatusInfo; -import net.sourceforge.phpdt.internal.ui.dialogs.StatusUtil; -import net.sourceforge.phpdt.internal.ui.text.java.hover.JavaEditorTextHoverDescriptor; -import net.sourceforge.phpdt.internal.ui.util.PixelConverter; -import net.sourceforge.phpdt.ui.PreferenceConstants; -import net.sourceforge.phpeclipse.PHPeclipsePlugin; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.text.Assert; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.KeyEvent; -import org.eclipse.swt.events.KeyListener; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.GridData; -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.Label; -import org.eclipse.swt.widgets.List; -import org.eclipse.swt.widgets.Text; - -/** - * Configures Java Editor hover preferences. - * - * @since 2.1 - */ -class JavaEditorHoverConfigurationBlock { - - private static final String DELIMITER = PreferencesMessages - .getString("JavaEditorHoverConfigurationBlock.delimiter"); //$NON-NLS-1$ - - // Data structure to hold the values which are edited by the user - private static class HoverConfig { - - private String fModifierString; - - private boolean fIsEnabled; - - private int fStateMask; - - private HoverConfig(String modifier, int stateMask, boolean enabled) { - fModifierString = modifier; - fIsEnabled = enabled; - fStateMask = stateMask; - } - } - - private IPreferenceStore fStore; - - private HoverConfig[] fHoverConfigs; - - private Text fModifierEditor; - - private Button fEnableField; - - private List fHoverList; - - private Text fDescription; - - private Button fShowHoverAffordanceCheckbox; - - private JavaEditorPreferencePage fMainPreferencePage; - - private StatusInfo fStatus; - - public JavaEditorHoverConfigurationBlock( - JavaEditorPreferencePage mainPreferencePage, IPreferenceStore store) { - Assert.isNotNull(mainPreferencePage); - Assert.isNotNull(store); - fMainPreferencePage = mainPreferencePage; - fStore = store; - } - - /** - * Creates page for hover preferences. - */ - public Control createControl(Composite parent) { - - PixelConverter pixelConverter = new PixelConverter(parent); - - Composite hoverComposite = new Composite(parent, SWT.NULL); - GridLayout layout = new GridLayout(); - layout.numColumns = 2; - hoverComposite.setLayout(layout); - GridData gd = new GridData(GridData.GRAB_HORIZONTAL - | GridData.VERTICAL_ALIGN_FILL); - hoverComposite.setLayoutData(gd); - - Label label = new Label(hoverComposite, SWT.NONE); - label - .setText(PreferencesMessages - .getString("JavaEditorHoverConfigurationBlock.hoverPreferences")); //$NON-NLS-1$ - gd = new GridData(GridData.FILL_HORIZONTAL); - gd.horizontalAlignment = GridData.BEGINNING; - gd.horizontalSpan = 2; - label.setLayoutData(gd); - gd = new GridData(GridData.GRAB_HORIZONTAL - | GridData.VERTICAL_ALIGN_FILL); - - // Hover list - fHoverList = new List(hoverComposite, SWT.SINGLE | SWT.V_SCROLL - | SWT.BORDER); - gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING - | GridData.FILL_HORIZONTAL); - int listHeight = 10 * fHoverList.getItemHeight(); - gd.heightHint = listHeight; - fHoverList.setLayoutData(gd); - fHoverList.addSelectionListener(new SelectionListener() { - public void widgetSelected(SelectionEvent e) { - handleHoverListSelection(); - } - - public void widgetDefaultSelected(SelectionEvent e) { - } - }); - - Composite stylesComposite = new Composite(hoverComposite, SWT.NONE); - layout = new GridLayout(); - layout.marginHeight = 0; - layout.marginWidth = 0; - layout.numColumns = 2; - stylesComposite.setLayout(layout); - gd = new GridData(GridData.FILL_HORIZONTAL); - gd.heightHint = listHeight + (2 * fHoverList.getBorderWidth()); - stylesComposite.setLayoutData(gd); - - // Enabled checkbox - fEnableField = new Button(stylesComposite, SWT.CHECK); - fEnableField.setText(PreferencesMessages - .getString("JavaEditorHoverConfigurationBlock.enabled")); //$NON-NLS-1$ - gd = new GridData(GridData.FILL_HORIZONTAL); - gd.horizontalAlignment = GridData.BEGINNING; - gd.horizontalSpan = 2; - fEnableField.setLayoutData(gd); - fEnableField.addSelectionListener(new SelectionListener() { - public void widgetSelected(SelectionEvent e) { - int i = fHoverList.getSelectionIndex(); - boolean state = fEnableField.getSelection(); - fModifierEditor.setEnabled(state); - fHoverConfigs[i].fIsEnabled = state; - handleModifierModified(); - } - - public void widgetDefaultSelected(SelectionEvent e) { - } - }); - - // Text field for modifier string - label = new Label(stylesComposite, SWT.LEFT); - label.setText(PreferencesMessages - .getString("JavaEditorHoverConfigurationBlock.keyModifier")); //$NON-NLS-1$ - fModifierEditor = new Text(stylesComposite, SWT.BORDER); - gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL); - fModifierEditor.setLayoutData(gd); - - fModifierEditor.addKeyListener(new KeyListener() { - private boolean isModifierCandidate; - - public void keyPressed(KeyEvent e) { - isModifierCandidate = e.keyCode > 0 && e.character == 0 - && e.stateMask == 0; - } - - public void keyReleased(KeyEvent e) { - if (isModifierCandidate && e.stateMask > 0 - && e.stateMask == e.stateMask && e.character == 0) {// && - // e.time - // -time - // < - // 1000) - // { - String text = fModifierEditor.getText(); - Point selection = fModifierEditor.getSelection(); - int i = selection.x - 1; - while (i > -1 && Character.isWhitespace(text.charAt(i))) { - i--; - } - boolean needsPrefixDelimiter = i > -1 - && !String.valueOf(text.charAt(i)) - .equals(DELIMITER); - - i = selection.y; - while (i < text.length() - && Character.isWhitespace(text.charAt(i))) { - i++; - } - boolean needsPostfixDelimiter = i < text.length() - && !String.valueOf(text.charAt(i)) - .equals(DELIMITER); - - String insertString; - - if (needsPrefixDelimiter && needsPostfixDelimiter) - insertString = PreferencesMessages - .getFormattedString( - "JavaEditorHoverConfigurationBlock.insertDelimiterAndModifierAndDelimiter", new String[] { Action.findModifierString(e.stateMask) }); //$NON-NLS-1$ - else if (needsPrefixDelimiter) - insertString = PreferencesMessages - .getFormattedString( - "JavaEditorHoverConfigurationBlock.insertDelimiterAndModifier", new String[] { Action.findModifierString(e.stateMask) }); //$NON-NLS-1$ - else if (needsPostfixDelimiter) - insertString = PreferencesMessages - .getFormattedString( - "JavaEditorHoverConfigurationBlock.insertModifierAndDelimiter", new String[] { Action.findModifierString(e.stateMask) }); //$NON-NLS-1$ - else - insertString = Action.findModifierString(e.stateMask); - - if (insertString != null) - fModifierEditor.insert(insertString); - } - } - }); - - fModifierEditor.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent e) { - handleModifierModified(); - } - }); - - // Description - Label descriptionLabel = new Label(stylesComposite, SWT.LEFT); - descriptionLabel.setText(PreferencesMessages - .getString("JavaEditorHoverConfigurationBlock.description")); //$NON-NLS-1$ - gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING); - gd.horizontalSpan = 2; - descriptionLabel.setLayoutData(gd); - fDescription = new Text(stylesComposite, SWT.LEFT | SWT.WRAP - | SWT.MULTI | SWT.READ_ONLY | SWT.BORDER); - gd = new GridData(GridData.FILL_BOTH); - gd.horizontalSpan = 2; - fDescription.setLayoutData(gd); - - // Vertical filler - Label filler = new Label(hoverComposite, SWT.LEFT); - gd = new GridData(GridData.BEGINNING | GridData.VERTICAL_ALIGN_FILL); - gd.heightHint = pixelConverter.convertHeightInCharsToPixels(1) / 3; - filler.setLayoutData(gd); - - // Affordance checkbox - fShowHoverAffordanceCheckbox = new Button(hoverComposite, SWT.CHECK); - fShowHoverAffordanceCheckbox.setText(PreferencesMessages - .getString("JavaEditorHoverConfigurationBlock.showAffordance")); //$NON-NLS-1$ - gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); - gd.horizontalIndent = 0; - gd.horizontalSpan = 2; - fShowHoverAffordanceCheckbox.setLayoutData(gd); - - initialize(); - - Dialog.applyDialogFont(hoverComposite); - return hoverComposite; - } - - private JavaEditorTextHoverDescriptor[] getContributedHovers() { - return PHPeclipsePlugin.getDefault() - .getJavaEditorTextHoverDescriptors(); - } - - void initialize() { - JavaEditorTextHoverDescriptor[] hoverDescs = getContributedHovers(); - fHoverConfigs = new HoverConfig[hoverDescs.length]; - for (int i = 0; i < hoverDescs.length; i++) { - fHoverConfigs[i] = new HoverConfig(hoverDescs[i] - .getModifierString(), hoverDescs[i].getStateMask(), - hoverDescs[i].isEnabled()); - fHoverList.add(hoverDescs[i].getLabel()); - } - initializeFields(); - } - - void initializeFields() { - fHoverList.getDisplay().asyncExec(new Runnable() { - public void run() { - if (fHoverList != null && !fHoverList.isDisposed()) { - fHoverList.select(0); - handleHoverListSelection(); - } - } - }); - fShowHoverAffordanceCheckbox - .setSelection(fStore - .getBoolean(PreferenceConstants.EDITOR_SHOW_TEXT_HOVER_AFFORDANCE)); - } - - void performOk() { - StringBuffer buf = new StringBuffer(); - StringBuffer maskBuf = new StringBuffer(); - for (int i = 0; i < fHoverConfigs.length; i++) { - buf.append(getContributedHovers()[i].getId()); - buf.append(JavaEditorTextHoverDescriptor.VALUE_SEPARATOR); - if (!fHoverConfigs[i].fIsEnabled) - buf.append(JavaEditorTextHoverDescriptor.DISABLED_TAG); - String modifier = fHoverConfigs[i].fModifierString; - if (modifier == null || modifier.length() == 0) - modifier = JavaEditorTextHoverDescriptor.NO_MODIFIER; - buf.append(modifier); - buf.append(JavaEditorTextHoverDescriptor.VALUE_SEPARATOR); - - maskBuf.append(getContributedHovers()[i].getId()); - maskBuf.append(JavaEditorTextHoverDescriptor.VALUE_SEPARATOR); - maskBuf.append(fHoverConfigs[i].fStateMask); - maskBuf.append(JavaEditorTextHoverDescriptor.VALUE_SEPARATOR); - } - fStore.setValue(PreferenceConstants.EDITOR_TEXT_HOVER_MODIFIERS, buf - .toString()); - fStore.setValue(PreferenceConstants.EDITOR_TEXT_HOVER_MODIFIER_MASKS, - maskBuf.toString()); - - fStore.setValue(PreferenceConstants.EDITOR_SHOW_TEXT_HOVER_AFFORDANCE, - fShowHoverAffordanceCheckbox.getSelection()); - - PHPeclipsePlugin.getDefault().resetJavaEditorTextHoverDescriptors(); - } - - void performDefaults() { - restoreFromPreferences(); - initializeFields(); - } - - private void restoreFromPreferences() { - - fShowHoverAffordanceCheckbox - .setSelection(fStore - .getBoolean(PreferenceConstants.EDITOR_SHOW_TEXT_HOVER_AFFORDANCE)); - - String compiledTextHoverModifiers = fStore - .getString(PreferenceConstants.EDITOR_TEXT_HOVER_MODIFIERS); - - StringTokenizer tokenizer = new StringTokenizer( - compiledTextHoverModifiers, - JavaEditorTextHoverDescriptor.VALUE_SEPARATOR); - HashMap idToModifier = new HashMap(tokenizer.countTokens() / 2); - - while (tokenizer.hasMoreTokens()) { - String id = tokenizer.nextToken(); - if (tokenizer.hasMoreTokens()) - idToModifier.put(id, tokenizer.nextToken()); - } - - String compiledTextHoverModifierMasks = PHPeclipsePlugin.getDefault() - .getPreferenceStore().getString( - PreferenceConstants.EDITOR_TEXT_HOVER_MODIFIER_MASKS); - - tokenizer = new StringTokenizer(compiledTextHoverModifierMasks, - JavaEditorTextHoverDescriptor.VALUE_SEPARATOR); - HashMap idToModifierMask = new HashMap(tokenizer.countTokens() / 2); - - while (tokenizer.hasMoreTokens()) { - String id = tokenizer.nextToken(); - if (tokenizer.hasMoreTokens()) - idToModifierMask.put(id, tokenizer.nextToken()); - } - - for (int i = 0; i < fHoverConfigs.length; i++) { - String modifierString = (String) idToModifier - .get(getContributedHovers()[i].getId()); - boolean enabled = true; - if (modifierString == null) - modifierString = JavaEditorTextHoverDescriptor.DISABLED_TAG; - - if (modifierString - .startsWith(JavaEditorTextHoverDescriptor.DISABLED_TAG)) { - enabled = false; - modifierString = modifierString.substring(1); - } - - if (modifierString - .equals(JavaEditorTextHoverDescriptor.NO_MODIFIER)) - modifierString = ""; //$NON-NLS-1$ - - fHoverConfigs[i].fModifierString = modifierString; - fHoverConfigs[i].fIsEnabled = enabled; - fHoverConfigs[i].fStateMask = JavaEditorTextHoverDescriptor - .computeStateMask(modifierString); - - if (fHoverConfigs[i].fStateMask == -1) { - try { - fHoverConfigs[i].fStateMask = Integer - .parseInt((String) idToModifierMask - .get(getContributedHovers()[i].getId())); - } catch (NumberFormatException ex) { - fHoverConfigs[i].fStateMask = -1; - } - } - } - } - - private void handleModifierModified() { - int i = fHoverList.getSelectionIndex(); - String modifiers = fModifierEditor.getText(); - fHoverConfigs[i].fModifierString = modifiers; - fHoverConfigs[i].fStateMask = JavaEditorTextHoverDescriptor - .computeStateMask(modifiers); - if (fHoverConfigs[i].fIsEnabled && fHoverConfigs[i].fStateMask == -1) - fStatus = new StatusInfo( - IStatus.ERROR, - PreferencesMessages - .getFormattedString( - "JavaEditorHoverConfigurationBlock.modifierIsNotValid", fHoverConfigs[i].fModifierString)); //$NON-NLS-1$ - else - fStatus = new StatusInfo(); - updateStatus(); - } - - private void handleHoverListSelection() { - int i = fHoverList.getSelectionIndex(); - boolean enabled = fHoverConfigs[i].fIsEnabled; - fEnableField.setSelection(enabled); - fModifierEditor.setEnabled(enabled); - fModifierEditor.setText(fHoverConfigs[i].fModifierString); - String description = getContributedHovers()[i].getDescription(); - if (description == null) - description = ""; //$NON-NLS-1$ - fDescription.setText(description); - } - - IStatus getStatus() { - if (fStatus == null) - fStatus = new StatusInfo(); - return fStatus; - } - - private void updateStatus() { - int i = 0; - HashMap stateMasks = new HashMap(fHoverConfigs.length); - while (fStatus.isOK() && i < fHoverConfigs.length) { - if (fHoverConfigs[i].fIsEnabled) { - String label = getContributedHovers()[i].getLabel(); - Integer stateMask = new Integer(fHoverConfigs[i].fStateMask); - if (fHoverConfigs[i].fStateMask == -1) - fStatus = new StatusInfo( - IStatus.ERROR, - PreferencesMessages - .getFormattedString( - "JavaEditorHoverConfigurationBlock.modifierIsNotValidForHover", new String[] { fHoverConfigs[i].fModifierString, label })); //$NON-NLS-1$ - else if (stateMasks.containsKey(stateMask)) - fStatus = new StatusInfo( - IStatus.ERROR, - PreferencesMessages - .getFormattedString( - "JavaEditorHoverConfigurationBlock.duplicateModifier", new String[] { label, (String) stateMasks.get(stateMask) })); //$NON-NLS-1$ - else - stateMasks.put(stateMask, label); - } - i++; - } - - if (fStatus.isOK()) - fMainPreferencePage.updateStatus(fStatus); - else { - fMainPreferencePage.setValid(false); - StatusUtil.applyToStatusLine(fMainPreferencePage, fStatus); - } - } -}