001package org.vishia.gral.awt; 002 003import java.awt.Frame; 004import java.awt.Rectangle; 005import java.awt.event.ComponentEvent; 006import java.awt.event.ComponentListener; 007import java.awt.event.HierarchyBoundsListener; 008import java.awt.event.HierarchyEvent; 009import java.awt.event.MouseEvent; 010import java.awt.event.MouseListener; 011import java.awt.event.MouseMotionListener; 012import java.awt.event.WindowAdapter; 013import java.awt.event.WindowEvent; 014import java.awt.event.WindowFocusListener; 015import java.awt.event.WindowListener; 016import java.awt.event.WindowStateListener; 017 018import org.eclipse.swt.graphics.Point; 019import org.vishia.gral.base.GralMng; 020import org.vishia.gral.base.GralWidgImpl_ifc; 021import org.vishia.gral.base.GralWindow; 022import org.vishia.gral.ifc.GralRectangle; 023import org.vishia.util.Debugutil; 024 025 026public class AwtSubWindow extends GralWindow.GraphicImplAccess implements GralWidgImpl_ifc 027{ 028 029 protected final Frame window; 030 031 private final boolean isMainWindow; 032 033 public AwtSubWindow(GralWindow wdgGral) 034 { super(wdgGral); 035 int windProps = super.getWindowProps(); 036 window = new Frame(getTitle()); 037 int xPos = 100; int yPos = 50; int xSize = 640; int ySize = 480; 038 window.setBounds(xPos, yPos, xSize, ySize); 039 window.setVisible(true); 040 window.setLayout(null); 041 if((windProps & GralWindow.windIsMain)!=0) { 042 this.isMainWindow = true; 043 //window.addKeyListener(AwtWidgetMng.mainKeyListener); 044 } else { 045 this.isMainWindow = false; 046 } 047 window.addComponentListener(componentListener); 048 window.addHierarchyBoundsListener(hierarchyBoundsListener); 049 //window.addContainerListener(containerListener); 050 //window.addMouseMotionListener(mousMotionListener); 051 //window.addMouseListener(mouseListener); 052 window.addWindowListener(new GralAwtWindowAdapter()); 053 //window.addWindowListener(windowClosingAdapter); 054 //window.addWindowListener(windowListener); 055 //window.add 056 057 } 058 059 060 @Override 061 public GralRectangle getPixelPositionSize() 062 { 063 Rectangle r = window.getBounds(); 064 Debugutil.stop(); 065 return new GralRectangle(r.x, r.y, r.width, r.height); 066 } 067 068 @Override public GralRectangle getPixelSize(){ 069 int dx = window.getWidth(); 070 int dy = window.getHeight(); 071 return new GralRectangle(0,0,dx, dy); 072 } 073 074 075 076 077 078 079 080 @Override 081 public void setBoundsPixel(int x, int y, int dx, int dy) 082 { window.setBounds(x,y,dx,dy); 083 } 084 085 086 087 @Override 088 public boolean setFocusGThread() 089 { 090 Debugutil.stop(); 091 return false; 092 } 093 094 095 /**Sets the implementation widget vible or not. 096 * @see org.vishia.gral.base.GralWidgImpl_ifc#setVisibleGThread(boolean) 097 */ 098 @Override public void setVisibleGThread(boolean bVisible){ super.setVisibleState(bVisible); window.setVisible(bVisible); } 099 100 101 @Override 102 public void removeWidgetImplementation() 103 { 104 Debugutil.stop(); 105 106 } 107 108 109 @Override 110 public void repaintGthread() { 111 Debugutil.stop(); 112 113 } 114 115 116 @Override public Object getWidgetImplementation() 117 { 118 Debugutil.stop(); 119 return window; 120 } 121 122 123 124 125 WindowListener windowListener = new WindowListener() 126 { 127 128 @Override public void windowOpened(WindowEvent e) 129 { 130 Debugutil.stop(); 131 132 } 133 134 @Override public void windowClosing(WindowEvent e) 135 { 136 Debugutil.stop(); 137 138 } 139 140 @Override public void windowClosed(WindowEvent e) 141 { 142 Debugutil.stop(); 143 144 } 145 146 @Override public void windowIconified(WindowEvent e) 147 { 148 Debugutil.stop(); 149 150 } 151 152 @Override public void windowDeiconified(WindowEvent e) 153 { 154 Debugutil.stop(); 155 156 } 157 158 @Override public void windowActivated(WindowEvent e) 159 { 160 Debugutil.stop(); 161 162 } 163 164 @Override public void windowDeactivated(WindowEvent e) 165 { 166 Debugutil.stop(); 167 168 } 169 }; 170 171 172 173 @SuppressWarnings("synthetic-access") 174 WindowListener windowClosingAdapter = new WindowAdapter() 175 { 176 177 public void windowClosing(WindowEvent event) 178 { 179 event.getWindow().setVisible(false); 180 event.getWindow().dispose(); 181 if (isMainWindow) 182 { 183 System.exit(0); 184 } 185 } 186 }; 187 188 189 190 public class GralAwtWindowAdapter 191 implements WindowListener, WindowStateListener, WindowFocusListener 192 { 193 194 @Override public void windowGainedFocus(WindowEvent e) 195 { 196 Debugutil.stop(); 197 198 } 199 200 @Override public void windowLostFocus(WindowEvent e) 201 { 202 Debugutil.stop(); 203 204 } 205 206 @Override public void windowStateChanged(WindowEvent e) 207 { 208 Debugutil.stop(); 209 System.out.println("state changed"); 210 211 } 212 213 @Override public void windowOpened(WindowEvent e) 214 { 215 Debugutil.stop(); 216 217 } 218 219 @Override public void windowClosing(WindowEvent event) 220 { 221 event.getWindow().setVisible(false); 222 event.getWindow().dispose(); 223 if (isMainWindow) 224 { 225 System.exit(0); 226 } 227 } 228 229 @Override public void windowClosed(WindowEvent e) 230 { 231 Debugutil.stop(); 232 233 } 234 235 @Override public void windowIconified(WindowEvent e) 236 { 237 Debugutil.stop(); 238 239 } 240 241 @Override public void windowDeiconified(WindowEvent e) 242 { 243 Debugutil.stop(); 244 245 } 246 247 @Override public void windowActivated(WindowEvent e) 248 { 249 Debugutil.stop(); 250 System.out.println("AwtWindow: activated"); 251 252 } 253 254 @Override public void windowDeactivated(WindowEvent e) 255 { 256 Debugutil.stop(); 257 258 } 259 260 } 261 262 263 MouseMotionListener mousMotionListener = new MouseMotionListener() 264 { 265 266 @Override public void mouseDragged(MouseEvent e) 267 { 268 Debugutil.stop(); 269 System.out.println("AwtWindow: mouseDragged"); 270 271 } 272 273 @Override public void mouseMoved(MouseEvent e) 274 { 275 Debugutil.stop(); 276 //System.out.println("AwtWindow: mouseMoved"); 277 278 } 279 280 }; 281 282 283 MouseListener mouseListener = new MouseListener() 284 { 285 286 @Override public void mouseClicked(MouseEvent e) 287 { 288 System.out.println("AwtWindow: mouseclicked"); 289 290 } 291 292 @Override public void mousePressed(MouseEvent e) 293 { 294 System.out.println("AwtWindow: mousePressed"); 295 296 } 297 298 @Override public void mouseReleased(MouseEvent e) 299 { 300 System.out.println("AwtWindow: mouseReleased"); 301 302 } 303 304 @Override public void mouseEntered(MouseEvent e) 305 { 306 System.out.println("AwtWindow: mouseEntered"); 307 308 } 309 310 @Override public void mouseExited(MouseEvent e) 311 { 312 System.out.println("AwtWindow: mouseExited"); 313 314 } 315 316 317 }; 318 319 320 //ContainerListener containerListener; 321 322 323 HierarchyBoundsListener hierarchyBoundsListener = new HierarchyBoundsListener() 324 { 325 326 @Override public void ancestorMoved(HierarchyEvent e) 327 { 328 System.out.println("AwtWindow: hierarchy-anchestorMoved"); 329 330 } 331 332 @Override public void ancestorResized(HierarchyEvent e) 333 { 334 System.out.println("AwtWindow: hierarchy-anchestorResized"); 335 336 } 337 338 }; 339 340 341 /**The componentListener is the resize listener especially. 342 * 343 */ 344 @SuppressWarnings("synthetic-access") 345 ComponentListener componentListener = new ComponentListener() 346 { 347 348 @Override public void componentShown(ComponentEvent e) 349 { 350 System.out.println("AwtWindow: component shown"); 351 352 } 353 354 355 356 @Override public void componentResized(ComponentEvent e) 357 { 358 System.out.println("AwtWindow: component resized"); 359 { if(resizeAction() !=null){ 360 resizeAction().exec(0, AwtSubWindow.super.gralWindow); 361 } 362 } 363 364 } 365 366 367 368 @Override public void componentMoved(ComponentEvent e) 369 { 370 System.out.println("AwtWindow: component moved"); 371 372 } 373 374 375 376 @Override public void componentHidden(ComponentEvent e) 377 { 378 System.out.println("AwtWindow: component hidden"); 379 380 } 381 }; 382 383 384}