diff --git a/debug/org.eclipse.cdt.debug.mi.ui/ChangeLog b/debug/org.eclipse.cdt.debug.mi.ui/ChangeLog index f16d78875d4..5c431b69e71 100644 --- a/debug/org.eclipse.cdt.debug.mi.ui/ChangeLog +++ b/debug/org.eclipse.cdt.debug.mi.ui/ChangeLog @@ -1,3 +1,10 @@ +2006-03-31 Mikhail Khodjaiants + Replaced internal org.eclipse.cdt.debug.internal.ui.SWTUtil class. + + SWTUtil.java + * ListDialogField.java + * SelectionButtonDialogField.java + * StringButtonDialogField.java + 2006-03-01 Mikhail Khodjaiants Select the first available command factory when a new launch configuration is created. * StandardGDBDebuggerPage.java diff --git a/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/SWTUtil.java b/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/SWTUtil.java new file mode 100644 index 00000000000..1a3cf12ab11 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/SWTUtil.java @@ -0,0 +1,100 @@ +/******************************************************************************* + * Copyright (c) 2005 IBM Corporation 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 + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.debug.mi.internal.ui; + +import org.eclipse.cdt.debug.internal.ui.PixelConverter; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.util.Assert; +import org.eclipse.swt.SWT; +import org.eclipse.swt.dnd.DragSource; +import org.eclipse.swt.dnd.DropTarget; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Caret; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.ScrollBar; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Widget; + +/** + * Utility class to simplify access to some SWT resources. + */ +public class SWTUtil { + + /** + * Returns the standard display to be used. The method first checks, if the + * thread calling this method has an associated disaply. If so, this + * display is returned. Otherwise the method returns the default display. + */ + public static Display getStandardDisplay() { + Display display; + display = Display.getCurrent(); + if ( display == null ) + display = Display.getDefault(); + return display; + } + + /** + * Returns the shell for the given widget. If the widget doesn't represent + * a SWT object that manage a shell, null is returned. + * + * @return the shell for the given widget + */ + public static Shell getShell(Widget widget) { + if ( widget instanceof Control ) + return ((Control)widget).getShell(); + if ( widget instanceof Caret ) + return ((Caret)widget).getParent().getShell(); + if ( widget instanceof DragSource ) + return ((DragSource)widget).getControl().getShell(); + if ( widget instanceof DropTarget ) + return ((DropTarget)widget).getControl().getShell(); + if ( widget instanceof Menu ) + return ((Menu)widget).getParent().getShell(); + if ( widget instanceof ScrollBar ) + return ((ScrollBar)widget).getParent().getShell(); + return null; + } + + /** + * Returns a width hint for a button control. + */ + public static int getButtonWidthHint( Button button ) { + PixelConverter converter = new PixelConverter( button ); + int widthHint = converter.convertHorizontalDLUsToPixels( IDialogConstants.BUTTON_WIDTH ); + return Math.max( widthHint, button.computeSize( SWT.DEFAULT, SWT.DEFAULT, true ).x ); + } + + /** + * Returns a height hint for a button control. + */ +// public static int getButtonHeigthHint( Button button ) { +// PixelConverter converter = new PixelConverter( button ); +// return converter.convertVerticalDLUsToPixels( IDialogConstants.BUTTON_HEIGHT ); +// } + + /** + * Sets width and height hint for the button control. Note: This + * is a NOP if the button's layout data is not an instance of GridData. + * + * @param the button for which to set the dimension hint + */ + public static void setButtonDimensionHint( Button button ) { + Assert.isNotNull( button ); + Object gd = button.getLayoutData(); + if ( gd instanceof GridData ) { + ((GridData)gd).widthHint = getButtonWidthHint( button ); + ((GridData)gd).horizontalAlignment = GridData.FILL; + } + } +} diff --git a/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/dialogfields/ListDialogField.java b/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/dialogfields/ListDialogField.java index 916adcba9be..e4019d84eb5 100644 --- a/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/dialogfields/ListDialogField.java +++ b/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/dialogfields/ListDialogField.java @@ -14,9 +14,8 @@ package org.eclipse.cdt.debug.mi.internal.ui.dialogfields; import java.util.ArrayList; import java.util.Iterator; import java.util.List; - -import org.eclipse.cdt.debug.internal.ui.PixelConverter; -import org.eclipse.cdt.debug.internal.ui.SWTUtil; +import org.eclipse.cdt.debug.mi.internal.ui.PixelConverter; +import org.eclipse.cdt.debug.mi.internal.ui.SWTUtil; import org.eclipse.jface.util.Assert; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ISelection; diff --git a/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/dialogfields/SelectionButtonDialogField.java b/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/dialogfields/SelectionButtonDialogField.java index e7b48dc2ec2..4558305a1a2 100644 --- a/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/dialogfields/SelectionButtonDialogField.java +++ b/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/dialogfields/SelectionButtonDialogField.java @@ -10,7 +10,7 @@ *******************************************************************************/ package org.eclipse.cdt.debug.mi.internal.ui.dialogfields; -import org.eclipse.cdt.debug.internal.ui.SWTUtil; +import org.eclipse.cdt.debug.mi.internal.ui.SWTUtil; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; diff --git a/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/dialogfields/StringButtonDialogField.java b/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/dialogfields/StringButtonDialogField.java index b74eee7d44d..a458a8a71c0 100644 --- a/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/dialogfields/StringButtonDialogField.java +++ b/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/dialogfields/StringButtonDialogField.java @@ -10,7 +10,7 @@ *******************************************************************************/ package org.eclipse.cdt.debug.mi.internal.ui.dialogfields; -import org.eclipse.cdt.debug.internal.ui.SWTUtil; +import org.eclipse.cdt.debug.mi.internal.ui.SWTUtil; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener;