Horus Doc || Java GUI Reference || Doxygen's quick Index  

DisplayApp Class Reference

A simple (server) application to display images. More...

Inheritance diagram for DisplayApp::

CorbaSampleApp SampleApp List of all members.

Public Methods

void handleOpenImageJava ()
 This function is called by _bmenu if the associated menu item is selected. More...

void quitSample ()
void handleServerImage ()
void handleWebImage ()
void handleStubBrowser ()
void handleAppBrowser ()
void handleRegisterApp ()
void setDisplayMode (String m)
void dragGestureRecognized (DragGestureEvent event)
void dragDropEnd (DragSourceDropEvent event)
void dragEnter (DragSourceDragEvent event)
void dragOver (DragSourceDragEvent event)
void dragExit (DragSourceEvent event)
void dropActionChanged (DragSourceDragEvent event)
void dragOver (DropTargetDragEvent event)
void drop (final DropTargetDropEvent event)
void dragEnter (DropTargetDragEvent event)
void dragExit (DropTargetEvent event)
void dropActionChanged (DropTargetDragEvent event)

Static Public Methods

void main (String[] args)
 main is called when this is used as an application. More...


Protected Methods

boolean buildSample (JFrame parent, JApplet applet, String[] args)

Detailed Description

A simple (server) application to display images.


Member Function Documentation

void DisplayApp::main String    args[] [inline, static]
 

main is called when this is used as an application.

This function has to be overloaded in the "leaf node" application itself.

Reimplemented from SampleApp.

00040 {
00041     DisplayApp app = new DisplayApp();
00042     app.doMain(args);
00043 
00044     // doMain will call buildSample
00045 }

void DisplayApp::handleOpenImageJava   [inline]
 

This function is called by _bmenu if the associated menu item is selected.

00051 {
00052     File file = askFilename(JAVA_FILTER, true);
00053     if(file == null) return;
00054 
00055     try {
00056         ImageManager imageMgr = ImageManager.defaultImageMgr();
00057         if(imageMgr == null) return;
00058 
00059         HxCorba.ImageRep img = imageMgr.loadLocalImage(file);
00060         String name = nameFromFile(file); // not the full path...
00061         StubRepository.instance().addStub(HxCorba.ImageRepHelper.id(), name, img);
00062         showImage(img, name);
00063 
00064     }catch(org.omg.CORBA.OBJECT_NOT_EXIST ex) {
00065         ErrorStreamArea.println("Cannot open image "+file.getPath());
00066     }catch(org.omg.CORBA.SystemException ex){
00067         ErrorStreamArea.println(""+ex);
00068     }
00069 }

void DisplayApp::quitSample   [inline]
 

Reimplemented from SampleApp.

00073 {
00074     //System.out.println("quitSample");
00075     unregisterApp();
00076     super.quitSample();
00077 }

void DisplayApp::handleServerImage   [inline]
 

00080 {
00081     ImageManager imageMgr = ImageManager.defaultImageMgr();
00082     if(imageMgr == null) return;
00083 
00084     File file = askFilename(HORUS_FILTER, CorbaMediator.instance().hasLocalServer());
00085     if(file == null) return;
00086 
00087     String name = nameFromFile(file); // not the full path...
00088     try {
00089         HxCorba.ImageRep img = imageMgr.loadServerImage(file.getPath());
00090         System.out.println(img.getSizes().x);
00091         System.out.println(img.getSizes().y);
00092 
00093         StubRepository.instance().addStub(HxCorba.ImageRepHelper.id(), name, img);
00094         showImage(img, name);
00095     }
00096     catch(org.omg.CORBA.OBJECT_NOT_EXIST ex) {
00097         ErrorStreamArea.println("Image "+file.getName()+" doesn't exist");
00098     }
00099 }

void DisplayApp::handleWebImage   [inline]
 

00102 {
00103     String urlStr = JOptionPane.showInputDialog("URL:");
00104     if(urlStr == null) return;
00105     URL url;
00106     try {
00107         url = new URL(urlStr);
00108     }
00109     catch(MalformedURLException ex){
00110         ErrorStreamArea.println(""+ex);
00111         return;
00112     }
00113 
00114     String name = nameFromFile(new File(url.getFile()));
00115     HxCorba.ImageRep image = null;
00116     if(isStandalone()) {
00117         ImageManager imageMgr = ImageManager.defaultImageMgr();
00118         if(imageMgr == null) return;
00119         image = imageMgr.loadWebImage(url);
00120     }
00121     else {
00122         HxCorba.WebImageFactory fac =
00123             ServiceRepository.instance().getWebImageFactory();
00124         if(fac == null) return;
00125         HxCorba.Constructor ctor =
00126             ServiceRepository.instance().getConstructor();
00127         if(ctor == null) return;
00128 
00129         HxCorba.ImageData data = fac.makeImageFromURL(urlStr);
00130         image = ctor.importImage(data);
00131     }
00132 
00133     StubRepository.instance().addStub(HxCorba.ImageRepHelper.id(), name, image);
00134     showImage(image, name);
00135 }

void DisplayApp::handleStubBrowser   [inline]
 

00139 {
00140     StubBrowser st = new StubBrowser();
00141 
00142     JDialog dlg = new JDialog(getParentFrame(), "Stub Browser", true);
00143     dlg.getContentPane().add(st);
00144     dlg.pack();
00145     dlg.setVisible(true);
00146 }

void DisplayApp::handleAppBrowser   [inline]
 

00150 {
00151     AppBrowser app = new AppBrowser();
00152     JDialog dlg = new JDialog(getParentFrame(), "App Browser", false);
00153     dlg.getContentPane().add(app);
00154     dlg.pack();
00155     dlg.setVisible(true);
00156 }

void DisplayApp::handleRegisterApp   [inline]
 

00160 {
00161     registerApp(new DisplayServant());
00162 }

void DisplayApp::setDisplayMode String    m [inline]
 

00174 {
00175     _displayMode = m;
00176     if(_canvas != null) _canvas.setDisplayMode(m);
00177     _viewer.doRefresh();
00178 }

void DisplayApp::dragGestureRecognized DragGestureEvent    event [inline]
 

00183 {
00184     // a drag gesture has been initiated
00185     HxCorba.ImageRep image = null;
00186     String name = null;
00187     String type = HxCorba.ImageRepHelper.id();
00188     String ior = null;
00189 
00190     name = _imName;
00191     image = _image;
00192 
00193     if(image != null) {
00194         ior = CorbaMediator.instance().object_to_string(image);
00195         Transferable data = new ObjectTransfer(type, name, ior);
00196         event.getDragSource().startDrag(event, DragSource.DefaultMoveNoDrop, data, this);
00197     }
00198 }

void DisplayApp::dragDropEnd DragSourceDropEvent    event [inline]
 

00202 {}

void DisplayApp::dragEnter DragSourceDragEvent    event [inline]
 

00203 {}

void DisplayApp::dragOver DragSourceDragEvent    event [inline]
 

00204 { }

void DisplayApp::dragExit DragSourceEvent    event [inline]
 

00205 {}

void DisplayApp::dropActionChanged DragSourceDragEvent    event [inline]
 

00206 { }

void DisplayApp::dragOver DropTargetDragEvent    event [inline]
 

00211 {
00212     if(event.isDataFlavorSupported(HxCorbaDataFlavor.objectFlavor) ||
00213             event.isDataFlavorSupported(DataFlavor.javaFileListFlavor))
00214         event.acceptDrag(event.getDropAction());
00215     else
00216         event.rejectDrag();
00217 }

void DisplayApp::drop final DropTargetDropEvent    event [inline]
 

00221 {
00222     if(!event.isDataFlavorSupported(HxCorbaDataFlavor.objectFlavor) &&
00223             !event.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
00224         event.rejectDrop();
00225         return;
00226     }
00227 
00228     try {
00229         event.acceptDrop(event.getDropAction());
00230         Transferable transferable = event.getTransferable();
00231         final DropTargetContext ctx = event.getDropTargetContext();
00232         final Object data;
00233 
00234         DataFlavor fl = HxCorbaDataFlavor.objectFlavor;
00235         if(transferable.isDataFlavorSupported(fl)) {
00236             data = transferable.getTransferData(fl);
00237             Thread t = new Thread() {
00238                 public void run() {
00239                     doDrop((ObjectTransfer)data, ctx.getDropTarget());
00240                 }
00241             };
00242             t.start();
00243             ctx.dropComplete(true);
00244             return;
00245         }
00246 
00247         fl = DataFlavor.javaFileListFlavor;
00248         if(transferable.isDataFlavorSupported(fl)) {
00249             data = transferable.getTransferData(fl);
00250             Thread t = new Thread() {
00251                 public void run() {
00252                     doDrop((java.util.List)data, ctx.getDropTarget());
00253                 }
00254             };
00255             t.start();
00256             ctx.dropComplete(true);
00257             return;
00258         }
00259 
00260     }
00261     catch (java.io.IOException exception) {
00262         exception.printStackTrace();
00263         event.rejectDrop();
00264     }catch (UnsupportedFlavorException ufException ) {
00265         ufException.printStackTrace();
00266         event.rejectDrop();
00267     }
00268 }

void DisplayApp::dragEnter DropTargetDragEvent    event [inline]
 

00271 {}

void DisplayApp::dragExit DropTargetEvent    event [inline]
 

00272 {}

void DisplayApp::dropActionChanged DropTargetDragEvent    event [inline]
 

00273 {}

boolean DisplayApp::buildSample JFrame    parent,
JApplet    applet,
String    args[]
[inline, protected, virtual]
 

Reimplemented from SampleApp.

00282 {
00283     //OutputStreamArea out = new OutputStreamArea(10,80);
00284     ErrorStreamArea err = new ErrorStreamArea(parent, 10, 80);
00285 
00286     OutputStreamArea.println("Initializing CorbaMediator...");
00287     initCorbaMediator(args);
00288     setAdvancedLookupManager(parent);
00289 
00290     OutputStreamArea.println("Building "+getSampleName()+" GUI...");
00291     if(isStandalone())
00292         parent.setTitle(getSampleName()+" (unregistered)");
00293 
00294     JPanel gui = new JPanel(new GridBagLayout());
00295 
00296 
00297     // Add viewer
00298 
00299     _viewer = ViewerFactory.makeBasicViewer();
00300 
00301     _dropTarget = new DropTarget(((BasicViewer)_viewer).ed, this);
00302     _dragSource = new DragSource();
00303     _dragSource.createDefaultDragGestureRecognizer(((BasicViewer)_viewer).ed,
00304         DnDConstants.ACTION_COPY_OR_MOVE, this);
00305 
00306     HX.addGridComp(gui, _viewer, 0, 0, 1, 1,
00307                    GridBagConstraints.BOTH, 1.0, 1.0, 1, 1);
00308 
00309     // Create CorbaExtMenuBar:
00310 
00311     //OutputStreamArea.println("Querying InterfaceRepository...");
00312 
00313     ExtMenuBar bmenu = new ExtMenuBar(this);
00314     bmenu.addMenu("File");
00315     if(isStandalone())
00316         bmenu.addMenuItem("File", "Open Local Image", "handleOpenImageJava");
00317     bmenu.addMenuItem("File", "Open Server Image", "handleServerImage");
00318     bmenu.addMenuItem("File", "Open Web Image", "handleWebImage");
00319     bmenu.addSeparator("File");
00320     //bmenu.addMenuItem("File", "Test", "handleTest");
00321     bmenu.addMenuItem("File", "Exit", "quitSample");
00322 
00323     bmenu.addMenu("Viewer");
00324     bmenu.addSubMenu("Viewer", "Display mode");
00325     bmenu.addGroupMenu("Display mode", getRGBModes(), "setDisplayMode", _displayMode);
00326 
00327     //bmenu.addCorbaObjectMenu("ImageRep");
00328     //bmenu.addCorbaObjectMenu("GlobalOps");
00329     //bmenu.addCorbaObjectsMenu();
00330 
00331     bmenu.addMenu("Tools");
00332     bmenu.addMenuItem("Tools", "Stub Browser", "handleStubBrowser");
00333     if(isStandalone()) {
00334         bmenu.addMenuItem("Tools", "App Browser", "handleAppBrowser");
00335         bmenu.addSeparator("Tools");
00336         bmenu.addMenuItem("Tools", "Register App", "handleRegisterApp");
00337     }
00338 
00339     parent.setJMenuBar(bmenu);
00340     parent.getContentPane().add(gui, BorderLayout.CENTER);
00341 
00342     parent.setSize(400, 450);
00343     parent.setLocation(0, 0);
00344 
00345     OutputStreamArea.println("Done");
00346 
00347     return true;
00348 }


The documentation for this class was generated from the following file:
Generated on Mon Jan 27 15:11:19 2003 for JavaReference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001