Skip to content

Commit 5902ee3

Browse files
committed
This change introduces "Expand All" and "Collapse All" toolbar option
in the API Errors/Warnings preference page in the UI (Eclipse->Settings->Plugin-Development Environment->API Errors/Warnings)
1 parent ebb6634 commit 5902ee3

File tree

4 files changed

+220
-0
lines changed

4 files changed

+220
-0
lines changed
Lines changed: 149 additions & 0 deletions
Loading

apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/ApiErrorsWarningsPreferencePage.java

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,21 @@
3131
import org.eclipse.pde.api.tools.ui.internal.IApiToolsHelpContextIds;
3232
import org.eclipse.pde.api.tools.ui.internal.SWTFactory;
3333
import org.eclipse.swt.SWT;
34+
import org.eclipse.swt.custom.ScrolledComposite;
3435
import org.eclipse.swt.events.SelectionListener;
36+
import org.eclipse.swt.graphics.Image;
3537
import org.eclipse.swt.layout.GridData;
3638
import org.eclipse.swt.widgets.Composite;
3739
import org.eclipse.swt.widgets.Control;
3840
import org.eclipse.swt.widgets.Link;
41+
import org.eclipse.swt.widgets.ToolBar;
42+
import org.eclipse.swt.widgets.ToolItem;
3943
import org.eclipse.ui.IWorkbench;
4044
import org.eclipse.ui.IWorkbenchPreferencePage;
4145
import org.eclipse.ui.PlatformUI;
4246
import org.eclipse.ui.dialogs.PreferencesUtil;
47+
import org.eclipse.ui.forms.widgets.ExpandableComposite;
48+
import org.eclipse.ui.plugin.AbstractUIPlugin;
4349
import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
4450

4551
/**
@@ -85,6 +91,9 @@ public class ApiErrorsWarningsPreferencePage extends PreferencePage implements I
8591
ApiErrorsWarningsConfigurationBlock block = null;
8692
private Link link = null;
8793

94+
private Image expandImage;
95+
private Image collapseImage;
96+
8897
/**
8998
* Since {@link #applyData(Object)} can be called before createContents,
9099
* store the data
@@ -98,6 +107,33 @@ public ApiErrorsWarningsPreferencePage() {
98107
super(PreferenceMessages.ApiErrorsWarningsPreferencePage_0);
99108
}
100109

110+
private void expandCollapseItems(Composite parent, boolean expandPage) {
111+
for (Control control : parent.getChildren()) {
112+
if (control instanceof ExpandableComposite page) {
113+
page.setExpanded(expandPage);
114+
Control child = page.getClient();
115+
if (child != null && !child.isDisposed()) {
116+
child.setVisible(expandPage);
117+
}
118+
} else if (control instanceof Composite) {
119+
expandCollapseItems((Composite) control, expandPage);
120+
}
121+
}
122+
parent.layout(true, true);
123+
ScrolledComposite composite = getScrolledComposite(parent);
124+
if (composite != null) {
125+
composite.setMinSize(parent.computeSize(SWT.DEFAULT, SWT.DEFAULT));
126+
}
127+
}
128+
129+
private ScrolledComposite getScrolledComposite(Composite comp) {
130+
Composite currentComposite = comp;
131+
while (currentComposite != null && !(currentComposite instanceof ScrolledComposite)) {
132+
currentComposite = currentComposite.getParent();
133+
}
134+
return (ScrolledComposite) currentComposite;
135+
}
136+
101137
@Override
102138
protected Control createContents(Composite parent) {
103139
Composite comp = SWTFactory.createComposite(parent, 1, 1, GridData.FILL_BOTH, 0, 0);
@@ -127,9 +163,38 @@ protected Control createContents(Composite parent) {
127163
new String[] { IApiToolsConstants.ID_ERRORS_WARNINGS_PROP_PAGE }, data).open();
128164
}
129165
}));
166+
167+
ToolBar buttonbar = new ToolBar(comp, SWT.FLAT | SWT.RIGHT);
168+
buttonbar.setLayoutData(new GridData(SWT.END, SWT.CENTER, true,
169+
false));
170+
ToolItem expandItems = new ToolItem(buttonbar, SWT.PUSH);
171+
expandImage = AbstractUIPlugin
172+
.imageDescriptorFromPlugin("org.eclipse.pde.api.tools.ui", "icons/full/elcl16/expandall.svg") //$NON-NLS-1$ //$NON-NLS-2$
173+
.createImage();
174+
expandItems.setImage(expandImage);
175+
expandItems.setToolTipText(PreferenceMessages.PREFERENCE_EXPAND_ALL);
176+
177+
ToolItem collapseItems = new ToolItem(buttonbar, SWT.PUSH);
178+
collapseImage = AbstractUIPlugin
179+
.imageDescriptorFromPlugin("org.eclipse.pde.api.tools.ui", "icons/full/elcl16/collapseall.svg") //$NON-NLS-1$ //$NON-NLS-2$
180+
.createImage();
181+
collapseItems.setImage(collapseImage);
182+
collapseItems.setToolTipText(PreferenceMessages.PREFERENCE_COLLAPSE_ALL);
183+
130184
block = new ApiErrorsWarningsConfigurationBlock(null, (IWorkbenchPreferenceContainer) getContainer());
131185
block.createControl(comp);
132186

187+
expandItems.addListener(SWT.Selection, e -> expandCollapseItems(comp, true));
188+
collapseItems.addListener(SWT.Selection, e -> expandCollapseItems(comp, false));
189+
comp.addDisposeListener(e -> {
190+
if (!expandImage.isDisposed() && expandImage != null) {
191+
expandImage.dispose();
192+
}
193+
if (!collapseImage.isDisposed() && collapseImage != null) {
194+
collapseImage.dispose();
195+
}
196+
});
197+
133198
// Initialize with data map in case applyData was called before
134199
// createContents
135200
applyData(fPageData);

apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/PreferenceMessages.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,9 @@ public class PreferenceMessages extends NLS {
165165
public static String CONSTRUCTOR_CHANGED_DECREASE_ACCESS;
166166
public static String CONSTRUCTOR_REMOVED_TYPE_PARAMETER;
167167

168+
public static String PREFERENCE_COLLAPSE_ALL;
169+
public static String PREFERENCE_EXPAND_ALL;
170+
168171
public static String TYPE_PARAMETER_ADDED_CLASS_BOUND;
169172
public static String TYPE_PARAMETER_ADDED_INTERFACE_BOUND;
170173
public static String TYPE_PARAMETER_CHANGED_CLASS_BOUND;

apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/preferencemessages.properties

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,9 @@ CONSTRUCTOR_CHANGED_VARARGS_TO_ARRAY=Converted variable argument type to array t
139139
CONSTRUCTOR_CHANGED_DECREASE_ACCESS=The visibility has been reduced:
140140
CONSTRUCTOR_REMOVED_TYPE_PARAMETER=A type parameter has been removed:
141141

142+
PREFERENCE_COLLAPSE_ALL= Collapse all preferences
143+
PREFERENCE_EXPAND_ALL= Expand all preferences
144+
142145
TYPE_PARAMETER_ADDED_CLASS_BOUND=A class bound has been added:
143146
TYPE_PARAMETER_ADDED_INTERFACE_BOUND=An interface bound has been added:
144147
TYPE_PARAMETER_CHANGED_CLASS_BOUND=A class bound has been modified:

0 commit comments

Comments
 (0)