summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Ruiz2012-03-01 19:11:56 (EST)
committer Sergey Prigogin2012-03-01 19:17:53 (EST)
commit92bd2aa4cc2ee47a965d12add89be8af5ed0812b (patch)
tree28648026dc121e163849fa498306b9b8263b90f3
parentfb808b7db2d2f5e9f95f7f1f35b4dfa780003a6c (diff)
downloadorg.eclipse.cdt-92bd2aa4cc2ee47a965d12add89be8af5ed0812b.zip
org.eclipse.cdt-92bd2aa4cc2ee47a965d12add89be8af5ed0812b.tar.gz
org.eclipse.cdt-92bd2aa4cc2ee47a965d12add89be8af5ed0812b.tar.bz2
Bug 373029 - Fixes to inconsistencies in Codan preference page.
-rw-r--r--codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/CodanPreferencePage.java126
1 files changed, 51 insertions, 75 deletions
diff --git a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/CodanPreferencePage.java b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/CodanPreferencePage.java
index 70aed99..b8ba26f 100644
--- a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/CodanPreferencePage.java
+++ b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/CodanPreferencePage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2011 Alena Laskavaia
+ * Copyright (c) 2009, 2012 Alena Laskavaia and others.
* 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
@@ -7,12 +7,10 @@
*
* Contributors:
* Alena Laskavaia - initial API and implementation
+ * Alex Ruiz (Google)
*******************************************************************************/
package org.eclipse.cdt.codan.internal.ui.preferences;
-import java.util.ArrayList;
-import java.util.Iterator;
-
import org.eclipse.cdt.codan.core.CodanCorePlugin;
import org.eclipse.cdt.codan.core.CodanRuntime;
import org.eclipse.cdt.codan.core.model.ICheckersRegistry;
@@ -23,6 +21,7 @@ import org.eclipse.cdt.codan.internal.ui.CodanUIMessages;
import org.eclipse.cdt.codan.internal.ui.dialogs.CustomizeProblemDialog;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
@@ -42,15 +41,18 @@ import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.preferences.ScopedPreferenceStore;
+import java.util.ArrayList;
+import java.util.Iterator;
+
/**
- * This class represents a preference page that is contributed to the
- * Preferences dialog. By subclassing <samp>FieldEditorPreferencePage</samp>, we
- * can use the field support built into JFace that allows us to create a page
- * that is small and knows how to save, restore and apply itself.
+ * This class represents a preference page that is contributed to the Preferences dialog. By
+ * subclassing {@code FieldEditorPreferencePage}, we can use built-in field support in JFace to
+ * create a page that is both small and knows how to save, restore and apply its values.
* <p>
- * This page is used to modify preferences only. They are stored in the
- * preference store that belongs to the main plug-in class. That way,
- * preferences can be accessed directly via the preference store.
+ * This page is used to modify preferences only. They are stored in the preference store that
+ * belongs to the main plug-in class. That way, preferences can be accessed directly via the
+ * preference store.
+ * </p>
*/
public class CodanPreferencePage extends FieldEditorOverlayPage implements IWorkbenchPreferencePage {
private static final String EMPTY_STRING = ""; //$NON-NLS-1$
@@ -62,23 +64,20 @@ public class CodanPreferencePage extends FieldEditorOverlayPage implements IWork
public CodanPreferencePage() {
super(GRID);
- setPreferenceStore(new ScopedPreferenceStore(new InstanceScope(), CodanCorePlugin.PLUGIN_ID));
- // setDescription("Code Analysis Preference Page");
+ setPreferenceStore(new ScopedPreferenceStore(InstanceScope.INSTANCE, CodanCorePlugin.PLUGIN_ID));
problemSelectionListener = new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
- if (infoButton != null) {
- if (event.getSelection() instanceof ITreeSelection) {
- ITreeSelection s = (ITreeSelection) event.getSelection();
- ArrayList<IProblem> list = new ArrayList<IProblem>();
- for (Iterator<?> iterator = s.iterator(); iterator.hasNext();) {
- Object o = iterator.next();
- if (o instanceof IProblem) {
- list.add((IProblem) o);
- }
+ if (infoButton != null && event.getSelection() instanceof ITreeSelection) {
+ ITreeSelection s = (ITreeSelection) event.getSelection();
+ ArrayList<IProblem> list = new ArrayList<IProblem>();
+ for (Iterator<?> iterator = s.iterator(); iterator.hasNext();) {
+ Object o = iterator.next();
+ if (o instanceof IProblem) {
+ list.add((IProblem) o);
}
- setSelectedProblems(list);
}
+ setSelectedProblems(list);
}
}
};
@@ -90,9 +89,9 @@ public class CodanPreferencePage extends FieldEditorOverlayPage implements IWork
}
/**
- * Creates the field editors. Field editors are abstractions of the common
- * GUI blocks needed to manipulate various types of preferences. Each field
- * editor knows how to save and restore itself.
+ * Creates the field editors. Field editors are abstractions of the common GUI blocks needed to
+ * manipulate various types of preferences. Each field editor knows how to save and restore
+ * its own value.
*/
@Override
public void createFieldEditors() {
@@ -106,29 +105,22 @@ public class CodanPreferencePage extends FieldEditorOverlayPage implements IWork
}
});
GridData layoutData = new GridData(GridData.FILL, GridData.FILL, true, true);
- layoutData.heightHint = 400;
+ layoutData.heightHint = 200;
checkedTreeEditor.getTreeViewer().getControl().setLayoutData(layoutData);
}
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.cdt.codan.internal.ui.preferences.FieldEditorOverlayPage#
- * createContents(org.eclipse.swt.widgets.Composite)
- */
@Override
protected Control createContents(Composite parent) {
- profile = isPropertyPage() ? getRegistry().getResourceProfileWorkingCopy((IResource) getElement()) : getRegistry()
- .getWorkspaceProfile();
+ if (isPropertyPage()) {
+ profile = getRegistry().getResourceProfileWorkingCopy((IResource) getElement());
+ } else {
+ profile = getRegistry().getWorkspaceProfile();
+ }
Composite comp = (Composite) super.createContents(parent);
createInfoControl(comp);
return comp;
}
- /**
- * @param comp
- */
private void createInfoControl(Composite comp) {
Composite info = new Composite(comp, SWT.NONE);
info.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
@@ -147,84 +139,68 @@ public class CodanPreferencePage extends FieldEditorOverlayPage implements IWork
restoreWidgetValues();
}
- /**
- * @param selection
- */
protected void setSelectedProblems(ArrayList<IProblem> list) {
this.selectedProblems = list;
updateProblemInfo();
}
- /**
- * @return
- */
protected ICheckersRegistry getRegistry() {
return CodanRuntime.getInstance().getCheckersRegistry();
}
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.preference.PreferencePage#performApply()
- */
@Override
public boolean performOk() {
saveWidgetValues();
- // if (isPropertyPage())
getRegistry().updateProfile((IResource) getElement(), null);
return super.performOk();
}
private void saveWidgetValues() {
- CodanUIActivator
- .getDefault()
- .getDialogSettings()
- .put(getWidgetId(),
- (selectedProblems == null || selectedProblems.size() == 0) ? EMPTY_STRING : selectedProblems.get(0).getId());
+ String id = (!hasSelectedProblems()) ? EMPTY_STRING : selectedProblems.get(0).getId();
+ getDialogSettings().put(getWidgetId(), id);
}
private void restoreWidgetValues() {
- String id = CodanUIActivator.getDefault().getDialogSettings().get(getWidgetId());
+ String id = getDialogSettings().get(getWidgetId());
if (id != null && id.length() > 0 && checkedTreeEditor != null) {
IProblem problem = profile.findProblem(id);
- if (problem != null)
+ if (problem != null) {
checkedTreeEditor.getTreeViewer().setSelection(new StructuredSelection(problem), true);
+ }
} else {
setSelectedProblems(null);
}
+ updateProblemInfo();
+ }
+
+ private IDialogSettings getDialogSettings() {
+ return CodanUIActivator.getDefault().getDialogSettings();
}
- /**
- * @return
- */
protected String getWidgetId() {
return getPageId() + ".selection"; //$NON-NLS-1$
}
private void updateProblemInfo() {
- if (selectedProblems == null) {
- infoButton.setEnabled(false);
- } else {
- infoButton.setEnabled(true);
- }
+ infoButton.setEnabled(hasSelectedProblems());
}
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
- */
@Override
public void init(IWorkbench workbench) {
}
protected void openCustomizeDialog() {
- if (selectedProblems == null || selectedProblems.size() == 0)
+ if (!hasSelectedProblems()) {
return;
- CustomizeProblemDialog dialog = new CustomizeProblemDialog(getShell(), selectedProblems.toArray(new IProblem[selectedProblems
- .size()]), (IResource) getElement());
+ }
+ IProblem[] selected = selectedProblems.toArray(new IProblem[selectedProblems.size()]);
+ CustomizeProblemDialog dialog =
+ new CustomizeProblemDialog(getShell(), selected, (IResource) getElement());
dialog.open();
checkedTreeEditor.getTreeViewer().refresh(true);
}
+
+ private boolean hasSelectedProblems() {
+ return selectedProblems != null && !selectedProblems.isEmpty();
+ }
} \ No newline at end of file