193 * 194 * Initially, all the LWToolkit implementations were supposed 195 * to have the similar message loop sequence: check if any events 196 * available, peek events, wait. However, the later analysis shown 197 * that X11 and Windows implementations are really different, so 198 * let the subclasses do whatever they require. 199 */ 200 protected abstract void platformRunMessage(); 201 202 public static LWToolkit getLWToolkit() { 203 return (LWToolkit)Toolkit.getDefaultToolkit(); 204 } 205 206 // ---- TOPLEVEL PEERS ---- // 207 208 /* 209 * Note that LWWindowPeer implements WindowPeer, FramePeer 210 * and DialogPeer interfaces. 211 */ 212 private LWWindowPeer createDelegatedPeer(Window target, PlatformComponent platformComponent, 213 PlatformWindow platformWindow) 214 { 215 LWWindowPeer peer = new LWWindowPeer(target, platformComponent, platformWindow); 216 targetCreatedPeer(target, peer); 217 peer.initialize(); 218 return peer; 219 } 220 221 @Override 222 public WindowPeer createWindow(Window target) { 223 PlatformComponent platformComponent = createPlatformComponent(); 224 PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.SIMPLEWINDOW); 225 return createDelegatedPeer(target, platformComponent, platformWindow); 226 } 227 228 @Override 229 public FramePeer createFrame(Frame target) { 230 PlatformComponent platformComponent = createPlatformComponent(); 231 PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.FRAME); 232 return createDelegatedPeer(target, platformComponent, platformWindow); 233 } 234 235 public LWWindowPeer createEmbeddedFrame(CEmbeddedFrame target) { 236 PlatformComponent platformComponent = createPlatformComponent(); 237 PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.EMBEDDEDFRAME); 238 return createDelegatedPeer(target, platformComponent, platformWindow); 239 } 240 241 CPrinterDialogPeer createCPrinterDialog(CPrinterDialog target) { 242 PlatformComponent platformComponent = createPlatformComponent(); 243 PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.DIALOG); 244 CPrinterDialogPeer peer = new CPrinterDialogPeer(target, platformComponent, platformWindow); 245 targetCreatedPeer(target, peer); 246 return peer; 247 } 248 249 @Override 250 public DialogPeer createDialog(Dialog target) { 251 if (target instanceof CPrinterDialog) { 252 return createCPrinterDialog((CPrinterDialog)target); 253 } 254 255 PlatformComponent platformComponent = createPlatformComponent(); 256 PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.DIALOG); 257 return createDelegatedPeer(target, platformComponent, platformWindow); 258 } 259 260 @Override 261 public FileDialogPeer createFileDialog(FileDialog target) { 262 FileDialogPeer peer = createFileDialogPeer(target); 263 targetCreatedPeer(target, peer); 264 return peer; 265 } 266 267 // ---- LIGHTWEIGHT COMPONENT PEERS ---- // 268 269 @Override 270 public ButtonPeer createButton(Button target) { 271 PlatformComponent platformComponent = createPlatformComponent(); 272 LWButtonPeer peer = new LWButtonPeer(target, platformComponent); 273 targetCreatedPeer(target, peer); 274 peer.initialize(); 275 return peer; 276 } 277 | 193 * 194 * Initially, all the LWToolkit implementations were supposed 195 * to have the similar message loop sequence: check if any events 196 * available, peek events, wait. However, the later analysis shown 197 * that X11 and Windows implementations are really different, so 198 * let the subclasses do whatever they require. 199 */ 200 protected abstract void platformRunMessage(); 201 202 public static LWToolkit getLWToolkit() { 203 return (LWToolkit)Toolkit.getDefaultToolkit(); 204 } 205 206 // ---- TOPLEVEL PEERS ---- // 207 208 /* 209 * Note that LWWindowPeer implements WindowPeer, FramePeer 210 * and DialogPeer interfaces. 211 */ 212 private LWWindowPeer createDelegatedPeer(Window target, PlatformComponent platformComponent, 213 PlatformWindow platformWindow, LWWindowPeer.PeerType peerType) 214 { 215 LWWindowPeer peer = new LWWindowPeer(target, platformComponent, platformWindow, peerType); 216 targetCreatedPeer(target, peer); 217 peer.initialize(); 218 return peer; 219 } 220 221 @Override 222 public WindowPeer createWindow(Window target) { 223 PlatformComponent platformComponent = createPlatformComponent(); 224 PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.SIMPLEWINDOW); 225 return createDelegatedPeer(target, platformComponent, platformWindow, LWWindowPeer.PeerType.SIMPLEWINDOW); 226 } 227 228 @Override 229 public FramePeer createFrame(Frame target) { 230 PlatformComponent platformComponent = createPlatformComponent(); 231 PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.FRAME); 232 return createDelegatedPeer(target, platformComponent, platformWindow, LWWindowPeer.PeerType.FRAME); 233 } 234 235 public LWWindowPeer createEmbeddedFrame(CEmbeddedFrame target) { 236 PlatformComponent platformComponent = createPlatformComponent(); 237 PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.EMBEDDEDFRAME); 238 return createDelegatedPeer(target, platformComponent, platformWindow, LWWindowPeer.PeerType.EMBEDDEDFRAME); 239 } 240 241 public LWWindowPeer createEmbeddedFrame(CViewEmbeddedFrame target) { 242 PlatformComponent platformComponent = createPlatformComponent(); 243 PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.VIEWEMBEDDEDFRAME); 244 return createDelegatedPeer(target, platformComponent, platformWindow, LWWindowPeer.PeerType.VIEWEMBEDDEDFRAME); 245 } 246 247 248 CPrinterDialogPeer createCPrinterDialog(CPrinterDialog target) { 249 PlatformComponent platformComponent = createPlatformComponent(); 250 PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.DIALOG); 251 CPrinterDialogPeer peer = new CPrinterDialogPeer(target, platformComponent, platformWindow); 252 targetCreatedPeer(target, peer); 253 return peer; 254 } 255 256 @Override 257 public DialogPeer createDialog(Dialog target) { 258 if (target instanceof CPrinterDialog) { 259 return createCPrinterDialog((CPrinterDialog)target); 260 } 261 262 PlatformComponent platformComponent = createPlatformComponent(); 263 PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.DIALOG); 264 return createDelegatedPeer(target, platformComponent, platformWindow, LWWindowPeer.PeerType.DIALOG); 265 } 266 267 @Override 268 public FileDialogPeer createFileDialog(FileDialog target) { 269 FileDialogPeer peer = createFileDialogPeer(target); 270 targetCreatedPeer(target, peer); 271 return peer; 272 } 273 274 // ---- LIGHTWEIGHT COMPONENT PEERS ---- // 275 276 @Override 277 public ButtonPeer createButton(Button target) { 278 PlatformComponent platformComponent = createPlatformComponent(); 279 LWButtonPeer peer = new LWButtonPeer(target, platformComponent); 280 targetCreatedPeer(target, peer); 281 peer.initialize(); 282 return peer; 283 } 284 |