67 /** 68 * DEPRECATED, but for now, called by add(String, int). 69 */ 70 public void addItem(String item, int index) { 71 addItems(new String[] {item}, index); 72 } 73 public native void addItems(String[] items, int index); 74 75 public synchronized native void reshape(int x, int y, int width, int height); 76 77 private WindowListener windowListener; 78 79 // Toolkit & peer internals 80 81 WChoicePeer(Choice target) { 82 super(target); 83 } 84 85 native void create(WComponentPeer parent); 86 87 void initialize() { 88 Choice opt = (Choice)target; 89 int itemCount = opt.getItemCount(); 90 if (itemCount > 0) { 91 String[] items = new String[itemCount]; 92 for (int i=0; i < itemCount; i++) { 93 items[i] = opt.getItem(i); 94 } 95 addItems(items, 0); 96 if (opt.getSelectedIndex() >= 0) { 97 select(opt.getSelectedIndex()); 98 } 99 } 100 101 Window parentWindow = SunToolkit.getContainingWindow((Component)target); 102 if (parentWindow != null) { 103 WWindowPeer wpeer = (WWindowPeer)parentWindow.getPeer(); 104 if (wpeer != null) { 105 windowListener = new WindowAdapter() { 106 public void windowIconified(WindowEvent e) { 107 closeList(); 108 } 109 public void windowClosing(WindowEvent e) { 110 closeList(); 111 } 112 }; 113 wpeer.addWindowListener(windowListener); 114 } 115 } 116 super.initialize(); 117 } 118 119 protected void disposeImpl() { 120 // TODO: we should somehow reset the listener when the choice 121 // is moved to another toplevel without destroying its peer. 122 Window parentWindow = SunToolkit.getContainingWindow((Component)target); 123 if (parentWindow != null) { 124 WWindowPeer wpeer = (WWindowPeer)parentWindow.getPeer(); 125 if (wpeer != null) { 126 wpeer.removeWindowListener(windowListener); 127 } 128 } 129 super.disposeImpl(); 130 } 131 132 // native callbacks 133 134 void handleAction(final int index) { 135 final Choice c = (Choice)target; 136 WToolkit.executeOnEventHandlerThread(c, new Runnable() { 137 public void run() { 138 c.select(index); | 67 /** 68 * DEPRECATED, but for now, called by add(String, int). 69 */ 70 public void addItem(String item, int index) { 71 addItems(new String[] {item}, index); 72 } 73 public native void addItems(String[] items, int index); 74 75 public synchronized native void reshape(int x, int y, int width, int height); 76 77 private WindowListener windowListener; 78 79 // Toolkit & peer internals 80 81 WChoicePeer(Choice target) { 82 super(target); 83 } 84 85 native void create(WComponentPeer parent); 86 87 @SuppressWarnings("deprecation") 88 void initialize() { 89 Choice opt = (Choice)target; 90 int itemCount = opt.getItemCount(); 91 if (itemCount > 0) { 92 String[] items = new String[itemCount]; 93 for (int i=0; i < itemCount; i++) { 94 items[i] = opt.getItem(i); 95 } 96 addItems(items, 0); 97 if (opt.getSelectedIndex() >= 0) { 98 select(opt.getSelectedIndex()); 99 } 100 } 101 102 Window parentWindow = SunToolkit.getContainingWindow((Component)target); 103 if (parentWindow != null) { 104 WWindowPeer wpeer = (WWindowPeer)parentWindow.getPeer(); 105 if (wpeer != null) { 106 windowListener = new WindowAdapter() { 107 public void windowIconified(WindowEvent e) { 108 closeList(); 109 } 110 public void windowClosing(WindowEvent e) { 111 closeList(); 112 } 113 }; 114 wpeer.addWindowListener(windowListener); 115 } 116 } 117 super.initialize(); 118 } 119 120 @SuppressWarnings("deprecation") 121 protected void disposeImpl() { 122 // TODO: we should somehow reset the listener when the choice 123 // is moved to another toplevel without destroying its peer. 124 Window parentWindow = SunToolkit.getContainingWindow((Component)target); 125 if (parentWindow != null) { 126 WWindowPeer wpeer = (WWindowPeer)parentWindow.getPeer(); 127 if (wpeer != null) { 128 wpeer.removeWindowListener(windowListener); 129 } 130 } 131 super.disposeImpl(); 132 } 133 134 // native callbacks 135 136 void handleAction(final int index) { 137 final Choice c = (Choice)target; 138 WToolkit.executeOnEventHandlerThread(c, new Runnable() { 139 public void run() { 140 c.select(index); |