diff options
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/WidgetTable.java')
-rwxr-xr-x | bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/WidgetTable.java | 240 |
1 files changed, 120 insertions, 120 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/WidgetTable.java b/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/WidgetTable.java index ce5ac52d44..fec0c7d19e 100755 --- a/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/WidgetTable.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/WidgetTable.java @@ -1,123 +1,123 @@ -package org.eclipse.swt.widgets;
-
-/*
+package org.eclipse.swt.widgets; + +/* * Copyright (c) 2000, 2002 IBM Corp. All rights reserved. * This file is 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
- */
-
-import org.eclipse.swt.internal.motif.*;
-
-class WidgetTable {
- static int FreeSlot = 0;
- static int GrowSize = 1024;
- static int [] IndexTable = new int [GrowSize];
- static Shell [] Shells = new Shell [GrowSize / 8];
- static Widget [] WidgetTable = new Widget [GrowSize];
- static int [] ArgList = {OS.XmNuserData, 0};
- static {
- for (int i=0; i<GrowSize-1; i++) IndexTable [i] = i + 1;
- IndexTable [GrowSize - 1] = -1;
- }
-public static synchronized Widget get (int handle) {
- if (handle == 0) return null;
- if (OS.XtIsSubclass (handle, OS.ShellWidgetClass ())) {
- for (int i=0; i<Shells.length; i++) {
- Widget shell = Shells [i];
- if ((shell != null) && (shell.topHandle () == handle)) return shell;
- }
- return null;
- }
- ArgList [1] = 0;
- OS.XtGetValues (handle, ArgList, ArgList.length / 2);
- if (ArgList [1] == 0) return null;
- int index = ArgList [1] - 1;
- if (0 <= index && index < WidgetTable.length) return WidgetTable [index];
- return null;
-}
-public synchronized static void put (int handle, Widget widget) {
- if (handle == 0) return;
- if (OS.XtIsSubclass (handle, OS.ShellWidgetClass ())) {
- for (int i=0; i<Shells.length; i++) {
- if (Shells [i] == null) {
- Shells [i] = (Shell) widget;
- return;
- }
- }
- Shell [] newShells = new Shell [Shells.length + GrowSize / 8];
- System.arraycopy (Shells, 0, newShells, 0, Shells.length);
- newShells [Shells.length] = (Shell) widget;
- Shells = newShells;
- return;
- }
- if (FreeSlot == -1) {
- int length = (FreeSlot = IndexTable.length) + GrowSize;
- int [] newIndexTable = new int [length];
- Widget [] newWidgetTable = new Widget [length];
- System.arraycopy (IndexTable, 0, newIndexTable, 0, FreeSlot);
- System.arraycopy (WidgetTable, 0, newWidgetTable, 0, FreeSlot);
- for (int i=FreeSlot; i<length-1; i++) {
- newIndexTable [i] = i + 1;
- }
- newIndexTable [length - 1] = -1;
- IndexTable = newIndexTable;
- WidgetTable = newWidgetTable;
- }
- ArgList [1] = FreeSlot + 1;
- OS.XtSetValues (handle, ArgList, ArgList.length / 2);
- int oldSlot = FreeSlot;
- FreeSlot = IndexTable [oldSlot];
- IndexTable [oldSlot] = -2;
- WidgetTable [oldSlot] = widget;
-}
-public static synchronized Widget remove (int handle) {
- if (handle == 0) return null;
- if (OS.XtIsSubclass (handle, OS.ShellWidgetClass ())) {
- for (int i=0; i<Shells.length; i++) {
- Widget shell = Shells [i];
- if ((shell != null) && (shell.topHandle () == handle)) {
- Shells [i] = null;
- return shell;
- }
- }
- return null;
- }
- ArgList [1] = 0;
- Widget widget = null;
- OS.XtGetValues (handle, ArgList, ArgList.length / 2);
- int index = ArgList [1] - 1;
- if (0 <= index && index < WidgetTable.length) {
- widget = WidgetTable [index];
- WidgetTable [index] = null;
- IndexTable [index] = FreeSlot;
- FreeSlot = index;
- ArgList [1] = 0;
- OS.XtSetValues (handle, ArgList, ArgList.length / 2);
- }
- return widget;
-}
-public static synchronized Shell [] shells () {
- int length = 0;
- for (int i=0; i<Shells.length; i++) {
- if (Shells [i] != null) length++;
- }
- int index = 0;
- Shell [] result = new Shell [length];
- for (int i=0; i<Shells.length; i++) {
- Shell widget = Shells [i];
- if (widget != null) result [index++] = widget;
- }
- return result;
-}
-public static synchronized int size () {
- int length = 0;
- for (int i=0; i<Shells.length; i++) {
- if (Shells [i] != null) length++;
- }
- for (int i=0; i<WidgetTable.length; i++) {
- if (WidgetTable [i] != null) length++;
- }
- return length;
-}
-}
+ * http://www.eclipse.org/legal/cpl-v10.html + */ + +import org.eclipse.swt.internal.motif.*; + +class WidgetTable { + static int FreeSlot = 0; + static int GrowSize = 1024; + static int [] IndexTable = new int [GrowSize]; + static Shell [] Shells = new Shell [GrowSize / 8]; + static Widget [] WidgetTable = new Widget [GrowSize]; + static int [] ArgList = {OS.XmNuserData, 0}; + static { + for (int i=0; i<GrowSize-1; i++) IndexTable [i] = i + 1; + IndexTable [GrowSize - 1] = -1; + } +public static synchronized Widget get (int handle) { + if (handle == 0) return null; + if (OS.XtIsSubclass (handle, OS.ShellWidgetClass ())) { + for (int i=0; i<Shells.length; i++) { + Widget shell = Shells [i]; + if ((shell != null) && (shell.topHandle () == handle)) return shell; + } + return null; + } + ArgList [1] = 0; + OS.XtGetValues (handle, ArgList, ArgList.length / 2); + if (ArgList [1] == 0) return null; + int index = ArgList [1] - 1; + if (0 <= index && index < WidgetTable.length) return WidgetTable [index]; + return null; +} +public synchronized static void put (int handle, Widget widget) { + if (handle == 0) return; + if (OS.XtIsSubclass (handle, OS.ShellWidgetClass ())) { + for (int i=0; i<Shells.length; i++) { + if (Shells [i] == null) { + Shells [i] = (Shell) widget; + return; + } + } + Shell [] newShells = new Shell [Shells.length + GrowSize / 8]; + System.arraycopy (Shells, 0, newShells, 0, Shells.length); + newShells [Shells.length] = (Shell) widget; + Shells = newShells; + return; + } + if (FreeSlot == -1) { + int length = (FreeSlot = IndexTable.length) + GrowSize; + int [] newIndexTable = new int [length]; + Widget [] newWidgetTable = new Widget [length]; + System.arraycopy (IndexTable, 0, newIndexTable, 0, FreeSlot); + System.arraycopy (WidgetTable, 0, newWidgetTable, 0, FreeSlot); + for (int i=FreeSlot; i<length-1; i++) { + newIndexTable [i] = i + 1; + } + newIndexTable [length - 1] = -1; + IndexTable = newIndexTable; + WidgetTable = newWidgetTable; + } + ArgList [1] = FreeSlot + 1; + OS.XtSetValues (handle, ArgList, ArgList.length / 2); + int oldSlot = FreeSlot; + FreeSlot = IndexTable [oldSlot]; + IndexTable [oldSlot] = -2; + WidgetTable [oldSlot] = widget; +} +public static synchronized Widget remove (int handle) { + if (handle == 0) return null; + if (OS.XtIsSubclass (handle, OS.ShellWidgetClass ())) { + for (int i=0; i<Shells.length; i++) { + Widget shell = Shells [i]; + if ((shell != null) && (shell.topHandle () == handle)) { + Shells [i] = null; + return shell; + } + } + return null; + } + ArgList [1] = 0; + Widget widget = null; + OS.XtGetValues (handle, ArgList, ArgList.length / 2); + int index = ArgList [1] - 1; + if (0 <= index && index < WidgetTable.length) { + widget = WidgetTable [index]; + WidgetTable [index] = null; + IndexTable [index] = FreeSlot; + FreeSlot = index; + ArgList [1] = 0; + OS.XtSetValues (handle, ArgList, ArgList.length / 2); + } + return widget; +} +public static synchronized Shell [] shells () { + int length = 0; + for (int i=0; i<Shells.length; i++) { + if (Shells [i] != null) length++; + } + int index = 0; + Shell [] result = new Shell [length]; + for (int i=0; i<Shells.length; i++) { + Shell widget = Shells [i]; + if (widget != null) result [index++] = widget; + } + return result; +} +public static synchronized int size () { + int length = 0; + for (int i=0; i<Shells.length; i++) { + if (Shells [i] != null) length++; + } + for (int i=0; i<WidgetTable.length; i++) { + if (WidgetTable [i] != null) length++; + } + return length; +} +} |