1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-26 09:43:53 +02:00

launchbar: make launchbar selectors resizeable

Change-Id: Iba264b3b1a666257663ba36bca9262d0c6339f89
This commit is contained in:
Alena Laskavaia 2015-07-23 15:09:11 -04:00 committed by Gerrit Code Review @ Eclipse.org
parent 0fc265dc4e
commit 6c7b1ba259

View file

@ -17,12 +17,14 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job; import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.launchbar.ui.IHoverProvider; import org.eclipse.launchbar.ui.IHoverProvider;
import org.eclipse.launchbar.ui.internal.Activator;
import org.eclipse.launchbar.ui.internal.Messages; import org.eclipse.launchbar.ui.internal.Messages;
import org.eclipse.swt.SWT; import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeEvent;
@ -368,7 +370,7 @@ public abstract class CSelector extends Composite {
if (popup != null && !popup.isDisposed()) { if (popup != null && !popup.isDisposed()) {
popup.dispose(); popup.dispose();
} }
popup = new Shell(getShell(), SWT.TOOL | SWT.ON_TOP); popup = new Shell(getShell(), SWT.TOOL | SWT.ON_TOP | SWT.RESIZE);
popup.setLayout(GridLayoutFactory.fillDefaults().spacing(0, 0).create()); popup.setLayout(GridLayoutFactory.fillDefaults().spacing(0, 0).create());
@ -395,11 +397,8 @@ public abstract class CSelector extends Composite {
Point popupLocation = popup.getDisplay().map(this, null, 0, Point popupLocation = popup.getDisplay().map(this, null, 0,
buttonBounds.height); buttonBounds.height);
popup.setLocation(popupLocation.x, popupLocation.y + 5); popup.setLocation(popupLocation.x, popupLocation.y + 5);
Point size = popup.computeSize(SWT.DEFAULT, SWT.DEFAULT);
Point buttonSize = getSize(); restoreShellSize();
size.x = Math.max(size.x, buttonSize.x);
size.y = Math.min(size.y, 300);
popup.setSize(size);
popup.setVisible(true); popup.setVisible(true);
popup.setFocus(); popup.setFocus();
getDisplay().addFilter(SWT.FocusIn, focusOutListener); getDisplay().addFilter(SWT.FocusIn, focusOutListener);
@ -411,13 +410,45 @@ public abstract class CSelector extends Composite {
getDisplay().removeFilter(SWT.FocusIn, focusOutListener); getDisplay().removeFilter(SWT.FocusIn, focusOutListener);
getDisplay().removeFilter(SWT.FocusOut, focusOutListener); getDisplay().removeFilter(SWT.FocusOut, focusOutListener);
getDisplay().removeFilter(SWT.MouseUp, focusOutListener); getDisplay().removeFilter(SWT.MouseUp, focusOutListener);
saveShellSize();
} }
}); });
if (hoverProvider != null) { if (hoverProvider != null) {
hoverProvider.dismissHover(selection != null ? selection : null, true); hoverProvider.dismissHover(selection != null ? selection : null, true);
} }
} }
protected String getDialogPreferencePrefix() {
return getClass().getSimpleName();
}
protected void restoreShellSize() {
Point size = popup.computeSize(SWT.DEFAULT, SWT.DEFAULT);
Point buttonSize = getSize();
size.x = Math.max(size.x, buttonSize.x);
size.y = Math.min(size.y, 300);
try {
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
String prefName = getDialogPreferencePrefix();
int w = store.getInt(prefName + ".shell.w");
int h = store.getInt(prefName + ".shell.h");
size.x = Math.max(size.x, w);
size.y = Math.max(size.y, h);
} catch (Exception e) {
Activator.log(e);
}
popup.setSize(size);
}
protected void saveShellSize() {
Point size = popup.getSize();
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
String prefName = getDialogPreferencePrefix();
store.setValue(prefName + ".shell.w", size.x);
store.setValue(prefName + ".shell.h", size.y);
}
protected void initializeListViewer(LaunchBarListViewer listViewer) { protected void initializeListViewer(LaunchBarListViewer listViewer) {
listViewer.setContentProvider(contentProvider); listViewer.setContentProvider(contentProvider);
listViewer.setLabelProvider(labelProvider); listViewer.setLabelProvider(labelProvider);