Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 7827 Details for
Bug 41240
GTK-BIDI: RTL support in Scale
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
Scale.java from build I20040210 with proposed changes.
Scale.java (text/plain), 13.72 KB, created by
Semion Chichelnitsky
on 2004-02-12 04:36:56 EST
(
hide
)
Description:
Scale.java from build I20040210 with proposed changes.
Filename:
MIME Type:
Creator:
Semion Chichelnitsky
Created:
2004-02-12 04:36:56 EST
Size:
13.72 KB
patch
obsolete
>/******************************************************************************* > * 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 org.eclipse.swt.widgets; > > >import org.eclipse.swt.*; >import org.eclipse.swt.internal.gtk.*; >import org.eclipse.swt.graphics.*; >import org.eclipse.swt.events.*; > >/** > * Instances of the receiver represent a selectable user > * interface object that present a range of continuous > * numeric values. > * <dl> > * <dt><b>Styles:</b></dt> > * <dd>HORIZONTAL, VERTICAL</dd> > * <dt><b>Events:</b></dt> > * <dd>Selection</dd> > * </dl> > * <p> > * Note: Only one of the styles HORIZONTAL and VERTICAL may be specified. > * </p><p> > * <p> > * IMPORTANT: This class is intended to be subclassed <em>only</em> > * within the SWT implementation. > * </p> > */ >public class Scale extends Control { > >/** > * Constructs a new instance of this class given its parent > * and a style value describing its behavior and appearance. > * <p> > * The style value is either one of the style constants defined in > * class <code>SWT</code> which is applicable to instances of this > * class, or must be built by <em>bitwise OR</em>'ing together > * (that is, using the <code>int</code> "|" operator) two or more > * of those <code>SWT</code> style constants. The class description > * lists the style constants that are applicable to the class. > * Style bits are also inherited from superclasses. > * </p> > * > * @param parent a composite control which will be the parent of the new instance (cannot be null) > * @param style the style of control to construct > * > * @exception IllegalArgumentException <ul> > * <li>ERROR_NULL_ARGUMENT - if the parent is null</li> > * </ul> > * @exception SWTException <ul> > * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li> > * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li> > * </ul> > * > * @see SWT#HORIZONTAL > * @see SWT#VERTICAL > * @see Widget#checkSubclass > * @see Widget#getStyle > */ >public Scale (Composite parent, int style) { > super (parent, checkStyle (style)); >} > >/** > * Adds the listener to the collection of listeners who will > * be notified when the receiver's value changes, by sending > * it one of the messages defined in the <code>SelectionListener</code> > * interface. > * > * @param listener the listener which should be notified > * > * @exception IllegalArgumentException <ul> > * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> > * </ul> > * @exception SWTException <ul> > * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> > * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> > * </ul> > * > * @see SelectionListener > * @see #removeSelectionListener > */ >public void addSelectionListener (SelectionListener listener) { > checkWidget (); > if (listener == null) error (SWT.ERROR_NULL_ARGUMENT); > TypedListener typedListener = new TypedListener (listener); > addListener (SWT.Selection,typedListener); > addListener (SWT.DefaultSelection,typedListener); >} > >static int checkStyle (int style) { > return checkBits (style, SWT.HORIZONTAL, SWT.VERTICAL, 0, 0, 0, 0); >} > >public Point computeSize (int wHint, int hHint, boolean changed) { > checkWidget(); > if (wHint != SWT.DEFAULT && wHint < 0) wHint = 0; > if (hHint != SWT.DEFAULT && hHint < 0) hHint = 0; > Point size = computeNativeSize(handle, wHint, hHint, changed); > if ((style & SWT.HORIZONTAL) != 0) { > if (wHint == SWT.DEFAULT) size.x = 2 * size.x; > } else { > if (hHint == SWT.DEFAULT) size.y = 2 * size.y; > } > return size; >} > >void createHandle (int index) { > state |= HANDLE; > fixedHandle = OS.gtk_fixed_new (); > if (fixedHandle == 0) error (SWT.ERROR_NO_HANDLES); > OS.gtk_fixed_set_has_window (fixedHandle, true); > int hAdjustment = OS.gtk_adjustment_new (0, 0, 100, 1, 10, 0); > if (hAdjustment == 0) error (SWT.ERROR_NO_HANDLES); > if ((style & SWT.HORIZONTAL) != 0) { > handle = OS.gtk_hscale_new (hAdjustment); > } else { > handle = OS.gtk_vscale_new (hAdjustment); > } > if (handle == 0) error (SWT.ERROR_NO_HANDLES); > int parentHandle = parent.parentingHandle (); > OS.gtk_container_add (parentHandle, fixedHandle); > OS.gtk_container_add (fixedHandle, handle); > OS.gtk_widget_show (fixedHandle); > OS.gtk_widget_show (handle); > OS.gtk_scale_set_digits (handle, 0); > OS.gtk_scale_set_draw_value (handle, false); >} > >void hookEvents () { > super.hookEvents (); > OS.g_signal_connect (handle, OS.value_changed, display.windowProc2, VALUE_CHANGED); >} > >/** > * Returns the amount that the receiver's value will be > * modified by when the up/down (or right/left) arrows > * are pressed. > * > * @return the increment > * > * @exception SWTException <ul> > * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> > * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> > * </ul> > */ >public int getIncrement () { > checkWidget (); > int hAdjustment = OS.gtk_range_get_adjustment (handle); > GtkAdjustment adjustment = new GtkAdjustment (); > OS.memmove (adjustment, hAdjustment); > return (int) adjustment.step_increment; >} > >/** > * Returns the maximum value which the receiver will allow. > * > * @return the maximum > * > * @exception SWTException <ul> > * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> > * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> > * </ul> > */ >public int getMaximum () { > checkWidget (); > int hAdjustment = OS.gtk_range_get_adjustment (handle); > GtkAdjustment adjustment = new GtkAdjustment (); > OS.memmove (adjustment, hAdjustment); > return (int) adjustment.upper; >} > >/** > * Returns the minimum value which the receiver will allow. > * > * @return the minimum > * > * @exception SWTException <ul> > * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> > * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> > * </ul> > */ >public int getMinimum () { > checkWidget (); > int hAdjustment = OS.gtk_range_get_adjustment (handle); > GtkAdjustment adjustment = new GtkAdjustment (); > OS.memmove (adjustment, hAdjustment); > return (int) adjustment.lower; >} > >/** > * Returns the amount that the receiver's value will be > * modified by when the page increment/decrement areas > * are selected. > * > * @return the page increment > * > * @exception SWTException <ul> > * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> > * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> > * </ul> > */ >public int getPageIncrement () { > checkWidget (); > int hAdjustment = OS.gtk_range_get_adjustment (handle); > GtkAdjustment adjustment = new GtkAdjustment (); > OS.memmove (adjustment, hAdjustment); > return (int) adjustment.page_increment; >} > >/** > * Returns the single <em>selection</em> that is the receiver's position. > * > * @return the selection > * > * @exception SWTException <ul> > * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> > * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> > * </ul> > */ >public int getSelection () { > checkWidget (); > int hAdjustment = OS.gtk_range_get_adjustment (handle); > GtkAdjustment adjustment = new GtkAdjustment (); > OS.memmove (adjustment, hAdjustment); > return (int) adjustment.value; >} > >int gtk_value_changed (int adjustment) { > postEvent (SWT.Selection); > return 0; >} > >/** > * Removes the listener from the collection of listeners who will > * be notified when the receiver's value changes. > * > * @param listener the listener which should no longer be notified > * > * @exception IllegalArgumentException <ul> > * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> > * </ul> > * @exception SWTException <ul> > * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> > * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> > * </ul> > * > * @see SelectionListener > * @see #addSelectionListener > */ >public void removeSelectionListener (SelectionListener listener) { > checkWidget (); > if (listener == null) error (SWT.ERROR_NULL_ARGUMENT); > if (eventTable == null) return; > eventTable.unhook (SWT.Selection, listener); > eventTable.unhook (SWT.DefaultSelection,listener); >} > >/** > * Sets the amount that the receiver's value will be > * modified by when the up/down (or right/left) arrows > * are pressed to the argument, which must be at least > * one. > * > * @param value the new increment (must be greater than zero) > * > * @exception SWTException <ul> > * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> > * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> > * </ul> > */ >public void setIncrement (int value) { > checkWidget (); > if (value < 1) return; > OS.g_signal_handlers_block_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); > OS.gtk_range_set_increments (handle, value, getPageIncrement ()); > OS.g_signal_handlers_unblock_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); >} > >/** > * Sets the maximum value which the receiver will allow > * to be the argument which must be greater than or > * equal to zero. > * > * @param value the new maximum (must be zero or greater) > * > * @exception SWTException <ul> > * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> > * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> > * </ul> > */ >public void setMaximum (int value) { > checkWidget (); > int minimum = getMinimum(); > if (value <= minimum) return; > OS.g_signal_handlers_block_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); > OS.gtk_range_set_range (handle, minimum, value); > OS.g_signal_handlers_unblock_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); >} > >/** > * Sets the minimum value which the receiver will allow > * to be the argument which must be greater than or > * equal to zero. > * > * @param value the new minimum (must be zero or greater) > * > * @exception SWTException <ul> > * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> > * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> > * </ul> > */ >public void setMinimum (int value) { > checkWidget (); > if (value < 0) return; > int maximum = getMaximum (); > if (value >= maximum) return; > OS.g_signal_handlers_block_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); > OS.gtk_range_set_range (handle, value, maximum); > OS.g_signal_handlers_unblock_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); >} > >/** > * Sets the amount that the receiver's value will be > * modified by when the page increment/decrement areas > * are selected to the argument, which must be at least > * one. > * > * @return the page increment (must be greater than zero) > * > * @exception SWTException <ul> > * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> > * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> > * </ul> > */ >public void setPageIncrement (int value) { > checkWidget (); > if (value < 1) return; > OS.g_signal_handlers_block_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); > OS.gtk_range_set_increments (handle, getIncrement (), value); > OS.g_signal_handlers_unblock_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); >} > >/** > * Sets the single <em>selection</em> that is the receiver's > * value to the argument which must be greater than or equal > * to zero. > * > * @param value the new selection (must be zero or greater) > * > * @exception SWTException <ul> > * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> > * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> > * </ul> > */ >public void setSelection (int value) { > checkWidget (); > OS.g_signal_handlers_block_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); > OS.gtk_range_set_value (handle, value); > OS.g_signal_handlers_unblock_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED); >} > >int gtk_key_press_event(int widget, int event) { //b41240 start > if (!hasFocus()) return 0; > int imHandle = imHandle(); > if (imHandle != 0) { > if (OS.gtk_im_context_filter_keypress(imHandle,event)) > return 1; > } > GdkEventKey gdkEvent = new GdkEventKey(); > OS.memmove(gdkEvent,event,GdkEventKey.sizeof); > if ((style & SWT.HORIZONTAL) != 0 && (style & SWT.RIGHT_TO_LEFT) != 0) { > int key = swapKeys(gdkEvent); > if (key != 0) { > gdkEvent.keyval = key; > gdkEvent.hardware_keycode = (short) OS.get_keycode_for_keyval(key); > OS.memmove(event,gdkEvent,GdkEventKey.sizeof); > } > } > OS.memmove(gdkEvent, event, GdkEventKey.sizeof); > if (translateTraversal(gdkEvent)) return 1; > if (isDisposed()) return 0; > return sendKeyEvent(SWT.KeyDown, gdkEvent)? 0:1; >} > >int swapKeys(GdkEventKey gdkEvent) { > int ret = 0; > if (gdkEvent.keyval == OS.GDK_Page_Up && gdkEvent.state == 0) > return OS.GDK_Page_Down; > else if(gdkEvent.keyval == OS.GDK_Page_Down && gdkEvent.state == 0) > return OS.GDK_Page_Up; > else if(gdkEvent.keyval == OS.GDK_Up && > (gdkEvent.state == 0 || gdkEvent.state == OS.GDK_CONTROL_MASK)) > return OS.GDK_Down; > else if(gdkEvent.keyval == OS.GDK_Down && > (gdkEvent.state == 0 || gdkEvent.state == OS.GDK_CONTROL_MASK)) > return OS.GDK_Up; > else > return ret; >} //b41240 end > >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 41240
:
5665
|
5666
|
5667
|
7825
|
7826
| 7827