From kawas at dev.open-bio.org Mon May 3 14:34:40 2010 From: kawas at dev.open-bio.org (Eddie Kawas) Date: Mon, 3 May 2010 14:34:40 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005031834.o43IYeOL022580@dev.open-bio.org> kawas Mon May 3 14:34:40 EDT 2010 Update of /home/repository/moby/moby-live/Perl/MOBY-Server/lib/MOBY In directory dev.open-bio.org:/tmp/cvs-serv22545/lib/MOBY Modified Files: Central.pm Log Message: added check for colons, ':', in registerX methods. moby-live/Perl/MOBY-Server/lib/MOBY Central.pm,1.12,1.13 =================================================================== RCS file: /home/repository/moby/moby-live/Perl/MOBY-Server/lib/MOBY/Central.pm,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- /home/repository/moby/moby-live/Perl/MOBY-Server/lib/MOBY/Central.pm 2009/08/28 14:40:44 1.12 +++ /home/repository/moby/moby-live/Perl/MOBY-Server/lib/MOBY/Central.pm 2010/05/03 18:34:40 1.13 @@ -318,7 +318,7 @@ return &_error("Object name may not contain spaces or other characters invalid in a URN", "" ) - if $term =~ /[\/\'\\\s"\&\<\>\[\]\^\`\{\|\}\~%\!\@#\$\*\+=]/; + if $term =~ /[\/\'\\\s"\&\<\>\[\]\^\`\{\|\}:\~%\!\@#\$\*\+=]/; if ( $term =~ m"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?" ) { # matches a URI return &_error( "Object name may not be an URN or URI", "" ) if $1; @@ -742,7 +742,7 @@ return &_error("serviceType name may not contain spaces or other characters invalid in a URN", "" ) - if $term =~ /[\/\'\\\s"\&\<\>\[\]\^\`\{\|\}\~%\!\@#\$\*\+=]/; + if $term =~ /[\/\'\\\s"\&\<\>\[\]\^\`\{\|\}\~%\!\@#\$\*\+=:]/; # validate that the final ontology will be valid my ( $exists, $exists_message, $existingURI ) = @@ -1006,7 +1006,7 @@ return &_error("Namespace name may not contain spaces or other characters invalid in a URN", "" ) - if $term =~ /[\/\'\\\s"\&\<\>\[\]\^\`\{\|\}\~%\!\@#\$\*\+=]/; + if $term =~ /[\/\'\\\s"\&\<\>\[\]\^\`\{\|\}\~%\!\@#\$\*\+=:]/; return &_error( "Malformed authURI - must not have an http:// prefix", "" ) if $auth =~ '[/:]'; return &_error( "Malformed authURI - must take the form NNN.NNN.NNN", "" ) From kawas at dev.open-bio.org Mon May 3 14:36:27 2010 From: kawas at dev.open-bio.org (Eddie Kawas) Date: Mon, 3 May 2010 14:36:27 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005031836.o43IaRZl022627@dev.open-bio.org> kawas Mon May 3 14:36:27 EDT 2010 Update of /home/repository/moby/moby-live/Perl/MOBY-Server In directory dev.open-bio.org:/tmp/cvs-serv22588 Modified Files: Makefile.PL Changes Log Message: update to reflect recent changes moby-live/Perl/MOBY-Server Makefile.PL,1.21,1.22 Changes,1.31,1.32 =================================================================== RCS file: /home/repository/moby/moby-live/Perl/MOBY-Server/Makefile.PL,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- /home/repository/moby/moby-live/Perl/MOBY-Server/Makefile.PL 2009/09/01 20:13:51 1.21 +++ /home/repository/moby/moby-live/Perl/MOBY-Server/Makefile.PL 2010/05/03 18:36:27 1.22 @@ -3,7 +3,7 @@ # Define metadata name 'MOBY'; - version '1.12'; + version '1.13'; license 'perl'; abstract 'This distribution is for communicating with or creating your own MOBY Central registry'; =================================================================== RCS file: /home/repository/moby/moby-live/Perl/MOBY-Server/Changes,v retrieving revision 1.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- /home/repository/moby/moby-live/Perl/MOBY-Server/Changes 2009/09/01 20:13:51 1.31 +++ /home/repository/moby/moby-live/Perl/MOBY-Server/Changes 2010/05/03 18:36:27 1.32 @@ -1,6 +1,8 @@ Revision history for Perl extension MOBY. - +1.13 + - fix: no longer allow colons to be used in names for terms in + registerX methods. 1.12 - Updated CommonSubs to remove all hard coded entries for the namespace prefix 'moby:'. In addition, all references to From kawas at dev.open-bio.org Tue May 4 10:49:19 2010 From: kawas at dev.open-bio.org (Eddie Kawas) Date: Tue, 4 May 2010 10:49:19 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005041449.o44EnJDl002928@dev.open-bio.org> kawas Tue May 4 10:49:18 EDT 2010 Update of /home/repository/moby/moby-live/Perl/MOBY-Server/t In directory dev.open-bio.org:/tmp/cvs-serv2893/t Modified Files: Client-Central.t Log Message: added some test to check for colons in the names of serviceTypes, namespaces and datatypes moby-live/Perl/MOBY-Server/t Client-Central.t,1.5,1.6 =================================================================== RCS file: /home/repository/moby/moby-live/Perl/MOBY-Server/t/Client-Central.t,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- /home/repository/moby/moby-live/Perl/MOBY-Server/t/Client-Central.t 2009/08/19 15:35:33 1.5 +++ /home/repository/moby/moby-live/Perl/MOBY-Server/t/Client-Central.t 2010/05/04 14:49:18 1.6 @@ -68,10 +68,15 @@ authURI => 'test.suite.com' ); $r = $C->deregisterService( serviceName => 'myfirstservicemultiplesimples', authURI => 'test.suite.com' ); + $r = $C->deregisterObjectClass( objectType => "Rubbish" ); $r = $C->deregisterObjectClass( objectType => "Rubbish_Art" ); + $r = $C->deregisterNamespace( namespaceType => 'RubbishNamespace' ); + $r = $C->deregisterNamespace( namespaceType => 'Rubbish:Namespace'); + $r = $C->deregisterServiceType( serviceType => 'RubbishyService' ); + $r = $C->deregisterServiceType( serviceType => 'Rubbishy:Service' ); $r = $C->deregisterServiceType( serviceType => 'RubbishyServiceNoParent' ); } @@ -247,6 +252,35 @@ . $r->message ); $r = $C->deregisterObjectClass( objectType => "Rubbish_'Art" ); +# confirm that we cannot register a datatype with : characters in its name +$r = $C->registerObjectClass( + ( + objectType => "Rubbish:Art", + description => "a human-readable description of the object", + contactEmail => 'your at email.address', + authURI => "test.suite.com", + Relationships => { + ISA => [ + { + object => 'Object', + articleName => 'article1' + } + ], + HASA => [ + { + object => 'Object', + articleName => 'articleName3' + }, + ] + } + ) +); +ok( !$r->success, "Object registration correctly failed" ) + or diag( + "Shouldn't be possible to register Object with a ':' character in its name!" + . $r->message ); +$r = $C->deregisterObjectClass( objectType => "Rubbish:Art" ); + # confirm that we cannot register a datatype with odd characters in its name $r = $C->registerObjectClass( ( @@ -347,6 +381,19 @@ ok( $r->success, "Name space registration successful" ) or diag( "Name space registration failure: " . $r->message ); +# check for invalid namespace registration + +my %InvalidNamespace = ( + namespaceType => 'Rubbish:Namespace', + authURI => 'your.authority.URI', + description => "human readable description of namespace", + contactEmail => 'your at address.here' +); +$r = $C->registerNamespace(%InvalidNamespace); +ok( !$r->success, "Name space registration correctly failed with a ':' in the name" ) + or diag( "Name space registration incorrectly succeeded with a ':' in the name: " . $r->message ); +$C->deregisterNamespace(%InvalidNamespace); + ############ SERVICE-TYPE REGISTRATION ############# #this registration should fail => empty relationship type my %ServiceType = ( @@ -394,6 +441,19 @@ is( $r->{'isa'}->[0]->{term}, $ServiceType{Relationships}->{ISA}->[0] ) or diag("Relationships (serviceType) doesn't have the right parentage."); +# check for invalid service type +my %InvalidServiceType = ( + serviceType => "Rubbishy:Service", + description => "a human-readable description of the service", + contactEmail => 'your at email.address', + authURI => "test.suite.com", + Relationships => { ISA => ['Retrieval'] } +); +$r = $C->registerServiceType(%InvalidServiceType); +ok( !$r->success, "Service Type registration with a ':' in the name correctly failed" ) + or diag( "Service Type registration incorrectly succeeded with a ':' in the name: " . $r->message ); +$C->deregisterServiceType(%InvalidServiceType); + ############# SERVICE INSTANCE REGISTRATION ########### # Set up a service registration hash. We'll mess with it piece by piece in the next several tests, # to make sure that registration is successful when you play by the rules. From gordonp at dev.open-bio.org Tue May 4 12:11:06 2010 From: gordonp at dev.open-bio.org (Paul Gordon) Date: Tue, 4 May 2010 12:11:06 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005041611.o44GB6qi005232@dev.open-bio.org> gordonp Tue May 4 12:11:06 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/resources/images In directory dev.open-bio.org:/tmp/cvs-serv5194/src/main/ca/ucalgary/seahawk/resources/images Modified Files: save_d.gif Log Message: Lightened grey to make inactivation more obvious moby-live/Java/src/main/ca/ucalgary/seahawk/resources/images save_d.gif,1.1,1.2 =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/resources/images/save_d.gif,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 Binary files /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/resources/images/save_d.gif 2006/10/25 02:33:22 1.1 and /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/resources/images/save_d.gif 2010/05/04 16:11:06 1.2 differ rcsdiff: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/resources/images/save_d.gif: diff failed From gordonp at dev.open-bio.org Tue May 4 12:13:21 2010 From: gordonp at dev.open-bio.org (Paul Gordon) Date: Tue, 4 May 2010 12:13:21 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005041613.o44GDLgb005462@dev.open-bio.org> gordonp Tue May 4 12:13:21 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/org/biomoby/client In directory dev.open-bio.org:/tmp/cvs-serv5426/src/main/org/biomoby/client Modified Files: MobyRequest.java Log Message: Use proper logging moby-live/Java/src/main/org/biomoby/client MobyRequest.java,1.47,1.48 =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/org/biomoby/client/MobyRequest.java,v retrieving revision 1.47 retrieving revision 1.48 diff -u -r1.47 -r1.48 --- /home/repository/moby/moby-live/Java/src/main/org/biomoby/client/MobyRequest.java 2010/04/16 17:29:21 1.47 +++ /home/repository/moby/moby-live/Java/src/main/org/biomoby/client/MobyRequest.java 2010/05/04 16:13:21 1.48 @@ -6,6 +6,7 @@ import java.net.PasswordAuthentication; // for HttpURLConnection username/password import java.net.URL; import java.util.*; +import java.util.logging.*; import javax.xml.namespace.QName; import javax.xml.parsers.DocumentBuilder; @@ -77,6 +78,8 @@ // or is executing services as a client asynchronously private Vector eventHandlers; + private static Logger logger = Logger.getLogger(MobyRequest.class.getName()); + /** * Default constructor. You should have a Central instance around since you're going to * be retrieving MobyServices to pass into here. Lets reuse it. @@ -995,10 +998,7 @@ throw new MobyException("Could not create MOBY payload XML from input data: " +e); } - if(debug){ - debugPS.println("Input to MOBY Service is:"); - debugPS.print(mobyRequest.toString()); - } + logger.log(Level.FINE, "Input to MOBY Service is:\n"+mobyRequest.toString()); return mobyRequest.toString(); } From gordonp at dev.open-bio.org Tue May 4 12:14:59 2010 From: gordonp at dev.open-bio.org (Paul Gordon) Date: Tue, 4 May 2010 12:14:59 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005041614.o44GExHA005572@dev.open-bio.org> gordonp Tue May 4 12:14:59 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/util In directory dev.open-bio.org:/tmp/cvs-serv5536/src/main/ca/ucalgary/seahawk/util Modified Files: DataUtils.java Log Message: Added createServiceInputFileForPeers() method used by MobyContentPane moby-live/Java/src/main/ca/ucalgary/seahawk/util DataUtils.java,1.7,1.8 =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/util/DataUtils.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/util/DataUtils.java 2010/04/26 16:25:36 1.7 +++ /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/util/DataUtils.java 2010/05/04 16:14:59 1.8 @@ -1024,6 +1024,24 @@ } /** + * Create a temp file that populates the MobyContentInstance from the sample data + * for all missing fields in peerJobs. This is used to populate a bunch of jobs + * at once, iterating over some list of values popped into the peerJobs payload. + * Used after service wrapping demo to call new service fopr all demo input peers. + */ + public static URL createServiceInputFileForPeers(MobyContentInstance peerJobs, MobyDataJob sampleJob) throws Exception{ + for(MobyDataJob peerJob: peerJobs.values()){ + for(String paramName: sampleJob.keySet()){ + if(!peerJob.containsKey(paramName)){ + peerJob.put(paramName, sampleJob.get(paramName)); + } + } + } + + return saveInputData(peerJobs); + } + + /** * We need to enumerate the possible peer-sets for the selected data item. Is the user interested in * items in the same namespace/data type, or same article name? */ From gordonp at dev.open-bio.org Tue May 4 12:15:47 2010 From: gordonp at dev.open-bio.org (Paul Gordon) Date: Tue, 4 May 2010 12:15:47 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005041615.o44GFlqP005950@dev.open-bio.org> gordonp Tue May 4 12:15:47 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui In directory dev.open-bio.org:/tmp/cvs-serv5914/src/main/ca/ucalgary/seahawk/gui Modified Files: FilterSearchWidget.java Log Message: Minor comment typo fixed moby-live/Java/src/main/ca/ucalgary/seahawk/gui FilterSearchWidget.java,1.5,1.6 =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/FilterSearchWidget.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/FilterSearchWidget.java 2010/04/26 17:50:33 1.5 +++ /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/FilterSearchWidget.java 2010/05/04 16:15:47 1.6 @@ -216,7 +216,7 @@ synchronized(sf){ try{ // Give 100ms for other threads past sb.replace() in DocumentListener callbacks to - // try to acquire a permit, avoiding redundant applyFiolter call + // try to acquire a permit, avoiding redundant applyFilter call Thread.sleep(100); } catch(Exception e){ From gordonp at dev.open-bio.org Tue May 4 12:16:33 2010 From: gordonp at dev.open-bio.org (Paul Gordon) Date: Tue, 4 May 2010 12:16:33 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005041616.o44GGXSV006118@dev.open-bio.org> gordonp Tue May 4 12:16:33 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui In directory dev.open-bio.org:/tmp/cvs-serv6082/src/main/ca/ucalgary/seahawk/gui Modified Files: MobyPayloadCreator.java Log Message: Null pointer check for source pane moby-live/Java/src/main/ca/ucalgary/seahawk/gui MobyPayloadCreator.java,1.5,1.6 =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/MobyPayloadCreator.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/MobyPayloadCreator.java 2010/04/26 16:29:13 1.5 +++ /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/MobyPayloadCreator.java 2010/05/04 16:16:33 1.6 @@ -59,7 +59,7 @@ } Document doc = null; // Get the list of nodes to filter, using in-memory data if possible - if(targetURL.equals(srcPane.getCurrentURL())){ + if(srcPane != null && targetURL.equals(srcPane.getCurrentURL())){ doc = srcPane.getCurrentDoc(); if(filter == null){ From gordonp at dev.open-bio.org Tue May 4 12:19:37 2010 From: gordonp at dev.open-bio.org (Paul Gordon) Date: Tue, 4 May 2010 12:19:37 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005041619.o44GJbR7006264@dev.open-bio.org> gordonp Tue May 4 12:19:37 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui In directory dev.open-bio.org:/tmp/cvs-serv6224/src/main/ca/ucalgary/seahawk/gui Modified Files: MobyContentGUI.java MobyContentPane.java Log Message: Refactoring and new code to implement 'for each' peers run on newly wrapped services moby-live/Java/src/main/ca/ucalgary/seahawk/gui MobyContentGUI.java,1.21,1.22 MobyContentPane.java,1.31,1.32 =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/MobyContentGUI.java,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/MobyContentGUI.java 2010/03/29 19:55:39 1.21 +++ /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/MobyContentGUI.java 2010/05/04 16:19:37 1.22 @@ -22,6 +22,7 @@ import org.biomoby.registry.meta.*; import org.biomoby.shared.*; import org.biomoby.shared.data.*; +import org.biomoby.shared.parser.MobyTags; import ca.ucalgary.seahawk.util.*; import ca.ucalgary.seahawk.services.MobyClient; @@ -69,6 +70,9 @@ public final static String SEAHAWK_NS_PREFIX = "seahawk"; public final static String SEAHAWK_XPATH_ATTR = "xpath"; + /** if URL starts with this, it's a service input payload spec of the form "url\tproviderURI\tserviceName" */ + public static final String SERVICE_INPUT_MAGIC = "#!"; + private int lastClickX = 0; private int lastClickY = 0; private JTabbedPane tabbedPane; @@ -777,11 +781,7 @@ } } - /** - * Called after a service has been created by the wrapping system, with the intention - * that the new service should be called and included in the browsing session. - */ - public void serviceWrapped(String providerURI, String serviceName, MobyDataJob sampleData) throws Exception{ + public MobyService findService(String providerURI, String serviceName) throws Exception{ CentralImpl central = getMobyCentralImpl(); MobyService[] services = central.findService(new MobyService(serviceName, providerURI)); if(services == null || services.length == 0){ @@ -792,18 +792,76 @@ throw new Exception("More than one service matching ("+providerURI+","+serviceName+ ") was found in the registry, something is seriously wrong!"); } + return services[0]; + } - MobyRequest request = new MobyRequest(central); - request.setService(services[0]); - MobyContentInstance inEnvelope = new MobyContentInstance(); - inEnvelope.put("test", sampleData); + public MobyContentInstance callService(MobyService service, MobyContentInstance inEnvelope) throws Exception{ + MobyRequest request = new MobyRequest(getMobyCentralImpl()); + request.setService(service); request.setInput(inEnvelope); - MobyContentInstance result = request.invokeService(); - ByteArrayOutputStream inputXML = new ByteArrayOutputStream(); - MobyDataUtils.toXMLDocument(inputXML, inEnvelope); - URL resultURL = DataUtils.saveOutputData(result, services[0], //for tracking purposes - inEnvelope, central.getRegistryEndpoint()); + return request.invokeService(); + } + /** + * Called after a service has been created by the wrapping system, with the intention + * that the new service should be called and included in the browsing session. + */ + public void serviceWrapped(String providerURI, String serviceName, MobyDataJob sampleData) throws Exception{ + MobyContentInstance inEnvelope = new MobyContentInstance(); + inEnvelope.put("demo", sampleData); + MobyService service = findService(providerURI, serviceName); + MobyContentInstance result = callService(service, inEnvelope); + + // If any of the input data had peers, allow the user to invoke the newly created service + // on all of its peers. + String peerOptionsHTML = ""; + for(MobyPrimaryData templateData: service.getPrimaryInputs()){ + MobyDataInstance data = sampleData.get(templateData.getName()); + if(!(data instanceof MobyPrimaryData)){ + // wierdness + logger.warn("Service parameter "+templateData.getName()+" is a primary parameter, but " + + "the sample data provided was of class "+data.getClass().getName()); + continue; + } + if(data.getUserData() == null){ + // untraceable for some reason. The UserData should have been passed along with + // the MobyDataInstance from MobyContentPane.getDraggedData(), all the way through + // PBE recorder... + logger.warn("Sample MobyDataInstance for new service did not have provenance " + + "data in UserData as expected, skipping peer checking for parameter "+ + templateData.getName()); + continue; + } + // MobyPayloadCreator contains the code to recreate the peer set of the sample data + // as it was the moment the data was dragged into the service wrapping demo. + MobyPayloadCreator srcDataInContext = new MobyPayloadCreator(null, (String) data.getUserData()); + MobyContentInstance peerJobs = srcDataInContext.createPayload(templateData.getName()); + if(peerJobs != null && peerJobs.size() > 1){ + String type = ((MobyPrimaryData) data).getDataType().getName(); + if(type.equals(MobyTags.MOBYOBJECT) && ((MobyPrimaryData) data).getNamespaces().length > 0){ + type = ((MobyPrimaryData) data).getNamespaces()[0].getName(); + } + // Create a moby payload input file that the user can use to send all peers + // with the same parameters as the demo + URL tempFile = DataUtils.createServiceInputFileForPeers(peerJobs, sampleData); + peerOptionsHTML += ("Click here to run " + serviceName + + " for the demo "+type+"'s peers (" + peerJobs.size() + + " total)
").replaceAll("<", "<"); + } + } + if(peerOptionsHTML.length() != 0){ + result.setServiceNotes(peerOptionsHTML); + } + + URL resultURL = DataUtils.saveOutputData(result, service, //for tracking purposes + inEnvelope, getMobyCentralImpl().getRegistryEndpoint()); + + loadWrappingPanel(resultURL); + } + + private void loadWrappingPanel(URL resultURL){ for(int i = 0; i < tabbedPane.getTabCount(); i++){ MobyContentPane pane = (MobyContentPane) tabbedPane.getComponentAt(i); if(pane.isWrappingService()){ @@ -812,10 +870,9 @@ break; } } - } - /** + /** * Load a Seahawk browser tab with the data held in the given MobyContentInstance. * Note that this methods take a snapshot of the data when it is passed in. Subsequent * changes to the MobyContentInstance will not be reflected in the Seahawk display. =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/MobyContentPane.java,v retrieving revision 1.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/MobyContentPane.java 2010/04/26 16:29:13 1.31 +++ /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/MobyContentPane.java 2010/05/04 16:19:37 1.32 @@ -494,6 +494,7 @@ return; } + hasFailed = false; setCursor(new Cursor(Cursor.WAIT_CURSOR)); try { // 1000 is initial, unimportant guess as to resulting HTML size @@ -1098,7 +1099,25 @@ // Internal moby pseudo-URL if(targetURL == null){ String desc = he.getDescription(); - if(desc.startsWith("#")){ + if(desc.startsWith(MobyContentGUI.SERVICE_INPUT_MAGIC)){ + // Run the input as is on the specified service. Desc is "#!inputURL\tserviceAuthURI\tserviceName" + String[] runSpec = desc.substring(MobyContentGUI.SERVICE_INPUT_MAGIC.length()).split("\t"); + URL inputURL = null; + try{ + inputURL = new URL(runSpec[0]); + } + catch(Exception e){ + logger.warn("Could not parse service input file URL "+runSpec[0], e); + return; + } + try{ + callServiceForInputURL(runSpec[1], runSpec[2], inputURL); + } catch(Exception e){ + logger.error("Could not call service "+runSpec[2]+" for peer set", e); + return; + } + } + else if(desc.startsWith("#")){ // Anchor hyperlink editorPane.scrollToReference(desc.substring(1)); } @@ -1127,7 +1146,7 @@ } } - if(he.getEventType() == HyperlinkEvent.EventType.ENTERED){ + else if(he.getEventType() == HyperlinkEvent.EventType.ENTERED){ overHyperlink = true; lastHyperlinkHovered = targetURL; if(isMobyURL(targetURL)){ @@ -1140,8 +1159,11 @@ } else if(targetURL == null){ String desc = he.getDescription(); + if(desc.startsWith(MobyContentGUI.SERVICE_INPUT_MAGIC)){ + status.setText("Click to run service on dataset"); + } // # start means relative anchor - if(desc.startsWith("#")){ + else if(desc.startsWith("#")){ status.setText("Scroll to section '" + desc.substring(1) + "'"); } } @@ -1149,12 +1171,22 @@ status.setText("Launch external link " + targetURL); } } - if(he.getEventType() == HyperlinkEvent.EventType.EXITED){ + else if(he.getEventType() == HyperlinkEvent.EventType.EXITED){ overHyperlink = false; status.setText(""); } } + private void callServiceForInputURL(String providerURI, String serviceName, URL inputURL) throws Exception{ + MobyContentInstance inEnvelope = MobyDataUtils.fromXMLDocument(inputURL); + MobyService service = contentGUI.findService(providerURI, serviceName); + MobyContentInstance result = contentGUI.callService(service, inEnvelope); + + URL resultURL = DataUtils.saveOutputData(result, service, //for tracking purposes + inEnvelope, contentGUI.getMobyCentralImpl().getRegistryEndpoint()); + gotoURL(resultURL, true); + } + private boolean isLinkEnabled(URL url){ String ref = url.getRef(); if(ref == null || ref.length() == 0){ @@ -1469,7 +1501,7 @@ } protected Document getCurrentDoc(){ - if(currentDoc == null){ // parse the doc into memory if not already there + if(currentDoc == null && getCurrentURL() != null){ // parse the doc into memory if not already there try{ currentDoc = DataUtils.docBuilder.parse(getCurrentURL().openStream()); } catch(Exception e){ From gordonp at dev.open-bio.org Tue May 4 12:20:45 2010 From: gordonp at dev.open-bio.org (Paul Gordon) Date: Tue, 4 May 2010 12:20:45 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005041620.o44GKjwp006347@dev.open-bio.org> gordonp Tue May 4 12:20:45 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/resources In directory dev.open-bio.org:/tmp/cvs-serv6311/src/main/ca/ucalgary/seahawk/resources Modified Files: mobyRules.xsl Log Message: LSIDified more rules, renamed to general, not EMBOSS specific names moby-live/Java/src/main/ca/ucalgary/seahawk/resources mobyRules.xsl,1.1,1.2 =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/resources/mobyRules.xsl,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/resources/mobyRules.xsl 2010/04/23 05:21:42 1.1 +++ /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/resources/mobyRules.xsl 2010/05/04 16:20:45 1.2 @@ -58,11 +58,8 @@ - - - - - + + @@ -76,19 +73,11 @@ - + + urn:lsid:bioxml.info:mobyLoweringSchemaMapping:GenericSequence2plain_sequence - - - - - - - - From gordonp at dev.open-bio.org Wed May 19 13:35:30 2010 From: gordonp at dev.open-bio.org (Paul Gordon) Date: Wed, 19 May 2010 13:35:30 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005191735.o4JHZUNd032028@dev.open-bio.org> gordonp Wed May 19 13:35:29 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/util In directory dev.open-bio.org:/tmp/cvs-serv31993/src/main/ca/ucalgary/util Log Message: Directory /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/util added to the repository moby-live/Java/src/main/ca/ucalgary/util - New directory rcsdiff: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/util/RCS/-,v: No such file or directory rcsdiff: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/util/RCS/New,v: No such file or directory rcsdiff: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/util/RCS/directory,v: No such file or directory From gordonp at dev.open-bio.org Wed May 19 13:38:56 2010 From: gordonp at dev.open-bio.org (Paul Gordon) Date: Wed, 19 May 2010 13:38:56 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005191738.o4JHcuf0032090@dev.open-bio.org> gordonp Wed May 19 13:38:56 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/util In directory dev.open-bio.org:/tmp/cvs-serv32058/src/main/ca/ucalgary/util Added Files: ArgumentListener.java SingletonApplication.java Log Message: Initial version of code to launch only one copy of a program, subsequent lanuches open a file in the existing app moby-live/Java/src/main/ca/ucalgary/util ArgumentListener.java,NONE,1.1 SingletonApplication.java,NONE,1.1 From drepchevski at dev.open-bio.org Thu May 27 08:17:58 2010 From: drepchevski at dev.open-bio.org (Dmitry Repchevski) Date: Thu, 27 May 2010 08:17:58 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005271217.o4RCHwZ3011638@dev.open-bio.org> drepchevski Thu May 27 08:17:58 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/org/inb/biomoby/central/gui/renderer In directory dev.open-bio.org:/tmp/cvs-serv11585/renderer Modified Files: EntityTreeCellRenderer.java Log Message: Entity description popup added. moby-live/Java/src/main/org/inb/biomoby/central/gui/renderer EntityTreeCellRenderer.java,1.1,1.2 =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/org/inb/biomoby/central/gui/renderer/EntityTreeCellRenderer.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- /home/repository/moby/moby-live/Java/src/main/org/inb/biomoby/central/gui/renderer/EntityTreeCellRenderer.java 2009/12/17 11:40:49 1.1 +++ /home/repository/moby/moby-live/Java/src/main/org/inb/biomoby/central/gui/renderer/EntityTreeCellRenderer.java 2010/05/27 12:17:58 1.2 @@ -10,7 +10,13 @@ package org.inb.biomoby.central.gui.renderer; +import java.awt.Color; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.StringReader; +import javax.swing.JToolTip; import javax.swing.JTree; +import javax.swing.UIManager; import javax.swing.tree.DefaultMutableTreeNode; import org.inb.biomoby.shared.registry.AbstractEntity; @@ -22,6 +28,8 @@ public class EntityTreeCellRenderer extends AbstractTreeCellRenderer { + private final static int MAX_WIDTH = 300; + @Override public AbstractTreeCellRenderer getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { @@ -40,7 +48,9 @@ else if (object instanceof AbstractEntity) { AbstractEntity entity = (AbstractEntity)object; + setText(entity.getName()); + setToolTipText(tree, entity.getDescription()); } else { @@ -50,4 +60,71 @@ return renderer; } + + private void setToolTipText(JTree tree, String s) + { + if (s != null && s.length() > 0) + { + JToolTip toolTip = tree.createToolTip(); + toolTip.setTipText(s); + + if (toolTip.getMinimumSize().width < MAX_WIDTH) + { + setToolTipText(s); + } + else + { + Color background = toolTip.getBackground(); + if (background == null) + { + background = UIManager.getLookAndFeel().getDefaults().getColor("ToolTip.background"); + + if (background == null) + { + background = Color.WHITE; + } + } + + Color foreground = toolTip.getForeground(); + if (foreground == null) + { + foreground = UIManager.getLookAndFeel().getDefaults().getColor("ToolTip.foreground"); + + if (foreground == null) + { + foreground = Color.BLACK; + } + } + + StringBuilder sb = new StringBuilder(); + sb.append(""); + sb.append("
"); + sb.append(""); + + BufferedReader reader = new BufferedReader(new StringReader(s)); + + try + { + String line; + while((line = reader.readLine()) != null) + { + sb.append(line); + sb.append("
"); + } + } + catch(IOException ex) {} + + sb.append("
"); + sb.append("
"); + sb.append(""); + + setToolTipText(sb.toString()); + } + } + } } From drepchevski at dev.open-bio.org Thu May 27 08:17:58 2010 From: drepchevski at dev.open-bio.org (Dmitry Repchevski) Date: Thu, 27 May 2010 08:17:58 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005271217.o4RCHwOB011620@dev.open-bio.org> drepchevski Thu May 27 08:17:58 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/org/inb/biomoby/central/gui In directory dev.open-bio.org:/tmp/cvs-serv11585 Modified Files: AbstractEntityTreePanel.java Log Message: Entity description popup added. moby-live/Java/src/main/org/inb/biomoby/central/gui AbstractEntityTreePanel.java,1.1,1.2 =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/org/inb/biomoby/central/gui/AbstractEntityTreePanel.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- /home/repository/moby/moby-live/Java/src/main/org/inb/biomoby/central/gui/AbstractEntityTreePanel.java 2009/12/17 11:40:49 1.1 +++ /home/repository/moby/moby-live/Java/src/main/org/inb/biomoby/central/gui/AbstractEntityTreePanel.java 2010/05/27 12:17:58 1.2 @@ -19,6 +19,7 @@ import javax.swing.JPanel; import javax.swing.JTree; import javax.swing.JViewport; +import javax.swing.ToolTipManager; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.tree.DefaultMutableTreeNode; @@ -53,6 +54,8 @@ tree.setCellRenderer(new EntityTreeCellRenderer()); + ToolTipManager.sharedInstance().registerComponent(tree); + scroll = new DecoratedJScrollPane(tree); scroll.getViewport().addChangeListener(this); From kawas at dev.open-bio.org Mon May 3 18:34:40 2010 From: kawas at dev.open-bio.org (Eddie Kawas) Date: Mon, 3 May 2010 14:34:40 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005031834.o43IYeOL022580@dev.open-bio.org> kawas Mon May 3 14:34:40 EDT 2010 Update of /home/repository/moby/moby-live/Perl/MOBY-Server/lib/MOBY In directory dev.open-bio.org:/tmp/cvs-serv22545/lib/MOBY Modified Files: Central.pm Log Message: added check for colons, ':', in registerX methods. moby-live/Perl/MOBY-Server/lib/MOBY Central.pm,1.12,1.13 =================================================================== RCS file: /home/repository/moby/moby-live/Perl/MOBY-Server/lib/MOBY/Central.pm,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- /home/repository/moby/moby-live/Perl/MOBY-Server/lib/MOBY/Central.pm 2009/08/28 14:40:44 1.12 +++ /home/repository/moby/moby-live/Perl/MOBY-Server/lib/MOBY/Central.pm 2010/05/03 18:34:40 1.13 @@ -318,7 +318,7 @@ return &_error("Object name may not contain spaces or other characters invalid in a URN", "" ) - if $term =~ /[\/\'\\\s"\&\<\>\[\]\^\`\{\|\}\~%\!\@#\$\*\+=]/; + if $term =~ /[\/\'\\\s"\&\<\>\[\]\^\`\{\|\}:\~%\!\@#\$\*\+=]/; if ( $term =~ m"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?" ) { # matches a URI return &_error( "Object name may not be an URN or URI", "" ) if $1; @@ -742,7 +742,7 @@ return &_error("serviceType name may not contain spaces or other characters invalid in a URN", "" ) - if $term =~ /[\/\'\\\s"\&\<\>\[\]\^\`\{\|\}\~%\!\@#\$\*\+=]/; + if $term =~ /[\/\'\\\s"\&\<\>\[\]\^\`\{\|\}\~%\!\@#\$\*\+=:]/; # validate that the final ontology will be valid my ( $exists, $exists_message, $existingURI ) = @@ -1006,7 +1006,7 @@ return &_error("Namespace name may not contain spaces or other characters invalid in a URN", "" ) - if $term =~ /[\/\'\\\s"\&\<\>\[\]\^\`\{\|\}\~%\!\@#\$\*\+=]/; + if $term =~ /[\/\'\\\s"\&\<\>\[\]\^\`\{\|\}\~%\!\@#\$\*\+=:]/; return &_error( "Malformed authURI - must not have an http:// prefix", "" ) if $auth =~ '[/:]'; return &_error( "Malformed authURI - must take the form NNN.NNN.NNN", "" ) From kawas at dev.open-bio.org Mon May 3 18:36:27 2010 From: kawas at dev.open-bio.org (Eddie Kawas) Date: Mon, 3 May 2010 14:36:27 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005031836.o43IaRZl022627@dev.open-bio.org> kawas Mon May 3 14:36:27 EDT 2010 Update of /home/repository/moby/moby-live/Perl/MOBY-Server In directory dev.open-bio.org:/tmp/cvs-serv22588 Modified Files: Makefile.PL Changes Log Message: update to reflect recent changes moby-live/Perl/MOBY-Server Makefile.PL,1.21,1.22 Changes,1.31,1.32 =================================================================== RCS file: /home/repository/moby/moby-live/Perl/MOBY-Server/Makefile.PL,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- /home/repository/moby/moby-live/Perl/MOBY-Server/Makefile.PL 2009/09/01 20:13:51 1.21 +++ /home/repository/moby/moby-live/Perl/MOBY-Server/Makefile.PL 2010/05/03 18:36:27 1.22 @@ -3,7 +3,7 @@ # Define metadata name 'MOBY'; - version '1.12'; + version '1.13'; license 'perl'; abstract 'This distribution is for communicating with or creating your own MOBY Central registry'; =================================================================== RCS file: /home/repository/moby/moby-live/Perl/MOBY-Server/Changes,v retrieving revision 1.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- /home/repository/moby/moby-live/Perl/MOBY-Server/Changes 2009/09/01 20:13:51 1.31 +++ /home/repository/moby/moby-live/Perl/MOBY-Server/Changes 2010/05/03 18:36:27 1.32 @@ -1,6 +1,8 @@ Revision history for Perl extension MOBY. - +1.13 + - fix: no longer allow colons to be used in names for terms in + registerX methods. 1.12 - Updated CommonSubs to remove all hard coded entries for the namespace prefix 'moby:'. In addition, all references to From kawas at dev.open-bio.org Tue May 4 14:49:19 2010 From: kawas at dev.open-bio.org (Eddie Kawas) Date: Tue, 4 May 2010 10:49:19 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005041449.o44EnJDl002928@dev.open-bio.org> kawas Tue May 4 10:49:18 EDT 2010 Update of /home/repository/moby/moby-live/Perl/MOBY-Server/t In directory dev.open-bio.org:/tmp/cvs-serv2893/t Modified Files: Client-Central.t Log Message: added some test to check for colons in the names of serviceTypes, namespaces and datatypes moby-live/Perl/MOBY-Server/t Client-Central.t,1.5,1.6 =================================================================== RCS file: /home/repository/moby/moby-live/Perl/MOBY-Server/t/Client-Central.t,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- /home/repository/moby/moby-live/Perl/MOBY-Server/t/Client-Central.t 2009/08/19 15:35:33 1.5 +++ /home/repository/moby/moby-live/Perl/MOBY-Server/t/Client-Central.t 2010/05/04 14:49:18 1.6 @@ -68,10 +68,15 @@ authURI => 'test.suite.com' ); $r = $C->deregisterService( serviceName => 'myfirstservicemultiplesimples', authURI => 'test.suite.com' ); + $r = $C->deregisterObjectClass( objectType => "Rubbish" ); $r = $C->deregisterObjectClass( objectType => "Rubbish_Art" ); + $r = $C->deregisterNamespace( namespaceType => 'RubbishNamespace' ); + $r = $C->deregisterNamespace( namespaceType => 'Rubbish:Namespace'); + $r = $C->deregisterServiceType( serviceType => 'RubbishyService' ); + $r = $C->deregisterServiceType( serviceType => 'Rubbishy:Service' ); $r = $C->deregisterServiceType( serviceType => 'RubbishyServiceNoParent' ); } @@ -247,6 +252,35 @@ . $r->message ); $r = $C->deregisterObjectClass( objectType => "Rubbish_'Art" ); +# confirm that we cannot register a datatype with : characters in its name +$r = $C->registerObjectClass( + ( + objectType => "Rubbish:Art", + description => "a human-readable description of the object", + contactEmail => 'your at email.address', + authURI => "test.suite.com", + Relationships => { + ISA => [ + { + object => 'Object', + articleName => 'article1' + } + ], + HASA => [ + { + object => 'Object', + articleName => 'articleName3' + }, + ] + } + ) +); +ok( !$r->success, "Object registration correctly failed" ) + or diag( + "Shouldn't be possible to register Object with a ':' character in its name!" + . $r->message ); +$r = $C->deregisterObjectClass( objectType => "Rubbish:Art" ); + # confirm that we cannot register a datatype with odd characters in its name $r = $C->registerObjectClass( ( @@ -347,6 +381,19 @@ ok( $r->success, "Name space registration successful" ) or diag( "Name space registration failure: " . $r->message ); +# check for invalid namespace registration + +my %InvalidNamespace = ( + namespaceType => 'Rubbish:Namespace', + authURI => 'your.authority.URI', + description => "human readable description of namespace", + contactEmail => 'your at address.here' +); +$r = $C->registerNamespace(%InvalidNamespace); +ok( !$r->success, "Name space registration correctly failed with a ':' in the name" ) + or diag( "Name space registration incorrectly succeeded with a ':' in the name: " . $r->message ); +$C->deregisterNamespace(%InvalidNamespace); + ############ SERVICE-TYPE REGISTRATION ############# #this registration should fail => empty relationship type my %ServiceType = ( @@ -394,6 +441,19 @@ is( $r->{'isa'}->[0]->{term}, $ServiceType{Relationships}->{ISA}->[0] ) or diag("Relationships (serviceType) doesn't have the right parentage."); +# check for invalid service type +my %InvalidServiceType = ( + serviceType => "Rubbishy:Service", + description => "a human-readable description of the service", + contactEmail => 'your at email.address', + authURI => "test.suite.com", + Relationships => { ISA => ['Retrieval'] } +); +$r = $C->registerServiceType(%InvalidServiceType); +ok( !$r->success, "Service Type registration with a ':' in the name correctly failed" ) + or diag( "Service Type registration incorrectly succeeded with a ':' in the name: " . $r->message ); +$C->deregisterServiceType(%InvalidServiceType); + ############# SERVICE INSTANCE REGISTRATION ########### # Set up a service registration hash. We'll mess with it piece by piece in the next several tests, # to make sure that registration is successful when you play by the rules. From gordonp at dev.open-bio.org Tue May 4 16:11:06 2010 From: gordonp at dev.open-bio.org (Paul Gordon) Date: Tue, 4 May 2010 12:11:06 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005041611.o44GB6qi005232@dev.open-bio.org> gordonp Tue May 4 12:11:06 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/resources/images In directory dev.open-bio.org:/tmp/cvs-serv5194/src/main/ca/ucalgary/seahawk/resources/images Modified Files: save_d.gif Log Message: Lightened grey to make inactivation more obvious moby-live/Java/src/main/ca/ucalgary/seahawk/resources/images save_d.gif,1.1,1.2 =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/resources/images/save_d.gif,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 Binary files /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/resources/images/save_d.gif 2006/10/25 02:33:22 1.1 and /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/resources/images/save_d.gif 2010/05/04 16:11:06 1.2 differ rcsdiff: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/resources/images/save_d.gif: diff failed From gordonp at dev.open-bio.org Tue May 4 16:13:21 2010 From: gordonp at dev.open-bio.org (Paul Gordon) Date: Tue, 4 May 2010 12:13:21 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005041613.o44GDLgb005462@dev.open-bio.org> gordonp Tue May 4 12:13:21 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/org/biomoby/client In directory dev.open-bio.org:/tmp/cvs-serv5426/src/main/org/biomoby/client Modified Files: MobyRequest.java Log Message: Use proper logging moby-live/Java/src/main/org/biomoby/client MobyRequest.java,1.47,1.48 =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/org/biomoby/client/MobyRequest.java,v retrieving revision 1.47 retrieving revision 1.48 diff -u -r1.47 -r1.48 --- /home/repository/moby/moby-live/Java/src/main/org/biomoby/client/MobyRequest.java 2010/04/16 17:29:21 1.47 +++ /home/repository/moby/moby-live/Java/src/main/org/biomoby/client/MobyRequest.java 2010/05/04 16:13:21 1.48 @@ -6,6 +6,7 @@ import java.net.PasswordAuthentication; // for HttpURLConnection username/password import java.net.URL; import java.util.*; +import java.util.logging.*; import javax.xml.namespace.QName; import javax.xml.parsers.DocumentBuilder; @@ -77,6 +78,8 @@ // or is executing services as a client asynchronously private Vector eventHandlers; + private static Logger logger = Logger.getLogger(MobyRequest.class.getName()); + /** * Default constructor. You should have a Central instance around since you're going to * be retrieving MobyServices to pass into here. Lets reuse it. @@ -995,10 +998,7 @@ throw new MobyException("Could not create MOBY payload XML from input data: " +e); } - if(debug){ - debugPS.println("Input to MOBY Service is:"); - debugPS.print(mobyRequest.toString()); - } + logger.log(Level.FINE, "Input to MOBY Service is:\n"+mobyRequest.toString()); return mobyRequest.toString(); } From gordonp at dev.open-bio.org Tue May 4 16:14:59 2010 From: gordonp at dev.open-bio.org (Paul Gordon) Date: Tue, 4 May 2010 12:14:59 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005041614.o44GExHA005572@dev.open-bio.org> gordonp Tue May 4 12:14:59 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/util In directory dev.open-bio.org:/tmp/cvs-serv5536/src/main/ca/ucalgary/seahawk/util Modified Files: DataUtils.java Log Message: Added createServiceInputFileForPeers() method used by MobyContentPane moby-live/Java/src/main/ca/ucalgary/seahawk/util DataUtils.java,1.7,1.8 =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/util/DataUtils.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/util/DataUtils.java 2010/04/26 16:25:36 1.7 +++ /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/util/DataUtils.java 2010/05/04 16:14:59 1.8 @@ -1024,6 +1024,24 @@ } /** + * Create a temp file that populates the MobyContentInstance from the sample data + * for all missing fields in peerJobs. This is used to populate a bunch of jobs + * at once, iterating over some list of values popped into the peerJobs payload. + * Used after service wrapping demo to call new service fopr all demo input peers. + */ + public static URL createServiceInputFileForPeers(MobyContentInstance peerJobs, MobyDataJob sampleJob) throws Exception{ + for(MobyDataJob peerJob: peerJobs.values()){ + for(String paramName: sampleJob.keySet()){ + if(!peerJob.containsKey(paramName)){ + peerJob.put(paramName, sampleJob.get(paramName)); + } + } + } + + return saveInputData(peerJobs); + } + + /** * We need to enumerate the possible peer-sets for the selected data item. Is the user interested in * items in the same namespace/data type, or same article name? */ From gordonp at dev.open-bio.org Tue May 4 16:15:47 2010 From: gordonp at dev.open-bio.org (Paul Gordon) Date: Tue, 4 May 2010 12:15:47 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005041615.o44GFlqP005950@dev.open-bio.org> gordonp Tue May 4 12:15:47 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui In directory dev.open-bio.org:/tmp/cvs-serv5914/src/main/ca/ucalgary/seahawk/gui Modified Files: FilterSearchWidget.java Log Message: Minor comment typo fixed moby-live/Java/src/main/ca/ucalgary/seahawk/gui FilterSearchWidget.java,1.5,1.6 =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/FilterSearchWidget.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/FilterSearchWidget.java 2010/04/26 17:50:33 1.5 +++ /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/FilterSearchWidget.java 2010/05/04 16:15:47 1.6 @@ -216,7 +216,7 @@ synchronized(sf){ try{ // Give 100ms for other threads past sb.replace() in DocumentListener callbacks to - // try to acquire a permit, avoiding redundant applyFiolter call + // try to acquire a permit, avoiding redundant applyFilter call Thread.sleep(100); } catch(Exception e){ From gordonp at dev.open-bio.org Tue May 4 16:16:33 2010 From: gordonp at dev.open-bio.org (Paul Gordon) Date: Tue, 4 May 2010 12:16:33 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005041616.o44GGXSV006118@dev.open-bio.org> gordonp Tue May 4 12:16:33 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui In directory dev.open-bio.org:/tmp/cvs-serv6082/src/main/ca/ucalgary/seahawk/gui Modified Files: MobyPayloadCreator.java Log Message: Null pointer check for source pane moby-live/Java/src/main/ca/ucalgary/seahawk/gui MobyPayloadCreator.java,1.5,1.6 =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/MobyPayloadCreator.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/MobyPayloadCreator.java 2010/04/26 16:29:13 1.5 +++ /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/MobyPayloadCreator.java 2010/05/04 16:16:33 1.6 @@ -59,7 +59,7 @@ } Document doc = null; // Get the list of nodes to filter, using in-memory data if possible - if(targetURL.equals(srcPane.getCurrentURL())){ + if(srcPane != null && targetURL.equals(srcPane.getCurrentURL())){ doc = srcPane.getCurrentDoc(); if(filter == null){ From gordonp at dev.open-bio.org Tue May 4 16:19:37 2010 From: gordonp at dev.open-bio.org (Paul Gordon) Date: Tue, 4 May 2010 12:19:37 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005041619.o44GJbR7006264@dev.open-bio.org> gordonp Tue May 4 12:19:37 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui In directory dev.open-bio.org:/tmp/cvs-serv6224/src/main/ca/ucalgary/seahawk/gui Modified Files: MobyContentGUI.java MobyContentPane.java Log Message: Refactoring and new code to implement 'for each' peers run on newly wrapped services moby-live/Java/src/main/ca/ucalgary/seahawk/gui MobyContentGUI.java,1.21,1.22 MobyContentPane.java,1.31,1.32 =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/MobyContentGUI.java,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/MobyContentGUI.java 2010/03/29 19:55:39 1.21 +++ /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/MobyContentGUI.java 2010/05/04 16:19:37 1.22 @@ -22,6 +22,7 @@ import org.biomoby.registry.meta.*; import org.biomoby.shared.*; import org.biomoby.shared.data.*; +import org.biomoby.shared.parser.MobyTags; import ca.ucalgary.seahawk.util.*; import ca.ucalgary.seahawk.services.MobyClient; @@ -69,6 +70,9 @@ public final static String SEAHAWK_NS_PREFIX = "seahawk"; public final static String SEAHAWK_XPATH_ATTR = "xpath"; + /** if URL starts with this, it's a service input payload spec of the form "url\tproviderURI\tserviceName" */ + public static final String SERVICE_INPUT_MAGIC = "#!"; + private int lastClickX = 0; private int lastClickY = 0; private JTabbedPane tabbedPane; @@ -777,11 +781,7 @@ } } - /** - * Called after a service has been created by the wrapping system, with the intention - * that the new service should be called and included in the browsing session. - */ - public void serviceWrapped(String providerURI, String serviceName, MobyDataJob sampleData) throws Exception{ + public MobyService findService(String providerURI, String serviceName) throws Exception{ CentralImpl central = getMobyCentralImpl(); MobyService[] services = central.findService(new MobyService(serviceName, providerURI)); if(services == null || services.length == 0){ @@ -792,18 +792,76 @@ throw new Exception("More than one service matching ("+providerURI+","+serviceName+ ") was found in the registry, something is seriously wrong!"); } + return services[0]; + } - MobyRequest request = new MobyRequest(central); - request.setService(services[0]); - MobyContentInstance inEnvelope = new MobyContentInstance(); - inEnvelope.put("test", sampleData); + public MobyContentInstance callService(MobyService service, MobyContentInstance inEnvelope) throws Exception{ + MobyRequest request = new MobyRequest(getMobyCentralImpl()); + request.setService(service); request.setInput(inEnvelope); - MobyContentInstance result = request.invokeService(); - ByteArrayOutputStream inputXML = new ByteArrayOutputStream(); - MobyDataUtils.toXMLDocument(inputXML, inEnvelope); - URL resultURL = DataUtils.saveOutputData(result, services[0], //for tracking purposes - inEnvelope, central.getRegistryEndpoint()); + return request.invokeService(); + } + /** + * Called after a service has been created by the wrapping system, with the intention + * that the new service should be called and included in the browsing session. + */ + public void serviceWrapped(String providerURI, String serviceName, MobyDataJob sampleData) throws Exception{ + MobyContentInstance inEnvelope = new MobyContentInstance(); + inEnvelope.put("demo", sampleData); + MobyService service = findService(providerURI, serviceName); + MobyContentInstance result = callService(service, inEnvelope); + + // If any of the input data had peers, allow the user to invoke the newly created service + // on all of its peers. + String peerOptionsHTML = ""; + for(MobyPrimaryData templateData: service.getPrimaryInputs()){ + MobyDataInstance data = sampleData.get(templateData.getName()); + if(!(data instanceof MobyPrimaryData)){ + // wierdness + logger.warn("Service parameter "+templateData.getName()+" is a primary parameter, but " + + "the sample data provided was of class "+data.getClass().getName()); + continue; + } + if(data.getUserData() == null){ + // untraceable for some reason. The UserData should have been passed along with + // the MobyDataInstance from MobyContentPane.getDraggedData(), all the way through + // PBE recorder... + logger.warn("Sample MobyDataInstance for new service did not have provenance " + + "data in UserData as expected, skipping peer checking for parameter "+ + templateData.getName()); + continue; + } + // MobyPayloadCreator contains the code to recreate the peer set of the sample data + // as it was the moment the data was dragged into the service wrapping demo. + MobyPayloadCreator srcDataInContext = new MobyPayloadCreator(null, (String) data.getUserData()); + MobyContentInstance peerJobs = srcDataInContext.createPayload(templateData.getName()); + if(peerJobs != null && peerJobs.size() > 1){ + String type = ((MobyPrimaryData) data).getDataType().getName(); + if(type.equals(MobyTags.MOBYOBJECT) && ((MobyPrimaryData) data).getNamespaces().length > 0){ + type = ((MobyPrimaryData) data).getNamespaces()[0].getName(); + } + // Create a moby payload input file that the user can use to send all peers + // with the same parameters as the demo + URL tempFile = DataUtils.createServiceInputFileForPeers(peerJobs, sampleData); + peerOptionsHTML += ("Click here to run " + serviceName + + " for the demo "+type+"'s peers (" + peerJobs.size() + + " total)
").replaceAll("<", "<"); + } + } + if(peerOptionsHTML.length() != 0){ + result.setServiceNotes(peerOptionsHTML); + } + + URL resultURL = DataUtils.saveOutputData(result, service, //for tracking purposes + inEnvelope, getMobyCentralImpl().getRegistryEndpoint()); + + loadWrappingPanel(resultURL); + } + + private void loadWrappingPanel(URL resultURL){ for(int i = 0; i < tabbedPane.getTabCount(); i++){ MobyContentPane pane = (MobyContentPane) tabbedPane.getComponentAt(i); if(pane.isWrappingService()){ @@ -812,10 +870,9 @@ break; } } - } - /** + /** * Load a Seahawk browser tab with the data held in the given MobyContentInstance. * Note that this methods take a snapshot of the data when it is passed in. Subsequent * changes to the MobyContentInstance will not be reflected in the Seahawk display. =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/MobyContentPane.java,v retrieving revision 1.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/MobyContentPane.java 2010/04/26 16:29:13 1.31 +++ /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/gui/MobyContentPane.java 2010/05/04 16:19:37 1.32 @@ -494,6 +494,7 @@ return; } + hasFailed = false; setCursor(new Cursor(Cursor.WAIT_CURSOR)); try { // 1000 is initial, unimportant guess as to resulting HTML size @@ -1098,7 +1099,25 @@ // Internal moby pseudo-URL if(targetURL == null){ String desc = he.getDescription(); - if(desc.startsWith("#")){ + if(desc.startsWith(MobyContentGUI.SERVICE_INPUT_MAGIC)){ + // Run the input as is on the specified service. Desc is "#!inputURL\tserviceAuthURI\tserviceName" + String[] runSpec = desc.substring(MobyContentGUI.SERVICE_INPUT_MAGIC.length()).split("\t"); + URL inputURL = null; + try{ + inputURL = new URL(runSpec[0]); + } + catch(Exception e){ + logger.warn("Could not parse service input file URL "+runSpec[0], e); + return; + } + try{ + callServiceForInputURL(runSpec[1], runSpec[2], inputURL); + } catch(Exception e){ + logger.error("Could not call service "+runSpec[2]+" for peer set", e); + return; + } + } + else if(desc.startsWith("#")){ // Anchor hyperlink editorPane.scrollToReference(desc.substring(1)); } @@ -1127,7 +1146,7 @@ } } - if(he.getEventType() == HyperlinkEvent.EventType.ENTERED){ + else if(he.getEventType() == HyperlinkEvent.EventType.ENTERED){ overHyperlink = true; lastHyperlinkHovered = targetURL; if(isMobyURL(targetURL)){ @@ -1140,8 +1159,11 @@ } else if(targetURL == null){ String desc = he.getDescription(); + if(desc.startsWith(MobyContentGUI.SERVICE_INPUT_MAGIC)){ + status.setText("Click to run service on dataset"); + } // # start means relative anchor - if(desc.startsWith("#")){ + else if(desc.startsWith("#")){ status.setText("Scroll to section '" + desc.substring(1) + "'"); } } @@ -1149,12 +1171,22 @@ status.setText("Launch external link " + targetURL); } } - if(he.getEventType() == HyperlinkEvent.EventType.EXITED){ + else if(he.getEventType() == HyperlinkEvent.EventType.EXITED){ overHyperlink = false; status.setText(""); } } + private void callServiceForInputURL(String providerURI, String serviceName, URL inputURL) throws Exception{ + MobyContentInstance inEnvelope = MobyDataUtils.fromXMLDocument(inputURL); + MobyService service = contentGUI.findService(providerURI, serviceName); + MobyContentInstance result = contentGUI.callService(service, inEnvelope); + + URL resultURL = DataUtils.saveOutputData(result, service, //for tracking purposes + inEnvelope, contentGUI.getMobyCentralImpl().getRegistryEndpoint()); + gotoURL(resultURL, true); + } + private boolean isLinkEnabled(URL url){ String ref = url.getRef(); if(ref == null || ref.length() == 0){ @@ -1469,7 +1501,7 @@ } protected Document getCurrentDoc(){ - if(currentDoc == null){ // parse the doc into memory if not already there + if(currentDoc == null && getCurrentURL() != null){ // parse the doc into memory if not already there try{ currentDoc = DataUtils.docBuilder.parse(getCurrentURL().openStream()); } catch(Exception e){ From gordonp at dev.open-bio.org Tue May 4 16:20:45 2010 From: gordonp at dev.open-bio.org (Paul Gordon) Date: Tue, 4 May 2010 12:20:45 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005041620.o44GKjwp006347@dev.open-bio.org> gordonp Tue May 4 12:20:45 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/resources In directory dev.open-bio.org:/tmp/cvs-serv6311/src/main/ca/ucalgary/seahawk/resources Modified Files: mobyRules.xsl Log Message: LSIDified more rules, renamed to general, not EMBOSS specific names moby-live/Java/src/main/ca/ucalgary/seahawk/resources mobyRules.xsl,1.1,1.2 =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/resources/mobyRules.xsl,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/resources/mobyRules.xsl 2010/04/23 05:21:42 1.1 +++ /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/seahawk/resources/mobyRules.xsl 2010/05/04 16:20:45 1.2 @@ -58,11 +58,8 @@ - - - - - + + @@ -76,19 +73,11 @@ - + + urn:lsid:bioxml.info:mobyLoweringSchemaMapping:GenericSequence2plain_sequence - - - - - - - - From gordonp at dev.open-bio.org Wed May 19 17:35:30 2010 From: gordonp at dev.open-bio.org (Paul Gordon) Date: Wed, 19 May 2010 13:35:30 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005191735.o4JHZUNd032028@dev.open-bio.org> gordonp Wed May 19 13:35:29 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/util In directory dev.open-bio.org:/tmp/cvs-serv31993/src/main/ca/ucalgary/util Log Message: Directory /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/util added to the repository moby-live/Java/src/main/ca/ucalgary/util - New directory rcsdiff: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/util/RCS/-,v: No such file or directory rcsdiff: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/util/RCS/New,v: No such file or directory rcsdiff: /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/util/RCS/directory,v: No such file or directory From gordonp at dev.open-bio.org Wed May 19 17:38:56 2010 From: gordonp at dev.open-bio.org (Paul Gordon) Date: Wed, 19 May 2010 13:38:56 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005191738.o4JHcuf0032090@dev.open-bio.org> gordonp Wed May 19 13:38:56 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/ca/ucalgary/util In directory dev.open-bio.org:/tmp/cvs-serv32058/src/main/ca/ucalgary/util Added Files: ArgumentListener.java SingletonApplication.java Log Message: Initial version of code to launch only one copy of a program, subsequent lanuches open a file in the existing app moby-live/Java/src/main/ca/ucalgary/util ArgumentListener.java,NONE,1.1 SingletonApplication.java,NONE,1.1 From drepchevski at dev.open-bio.org Thu May 27 12:17:58 2010 From: drepchevski at dev.open-bio.org (Dmitry Repchevski) Date: Thu, 27 May 2010 08:17:58 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005271217.o4RCHwZ3011638@dev.open-bio.org> drepchevski Thu May 27 08:17:58 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/org/inb/biomoby/central/gui/renderer In directory dev.open-bio.org:/tmp/cvs-serv11585/renderer Modified Files: EntityTreeCellRenderer.java Log Message: Entity description popup added. moby-live/Java/src/main/org/inb/biomoby/central/gui/renderer EntityTreeCellRenderer.java,1.1,1.2 =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/org/inb/biomoby/central/gui/renderer/EntityTreeCellRenderer.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- /home/repository/moby/moby-live/Java/src/main/org/inb/biomoby/central/gui/renderer/EntityTreeCellRenderer.java 2009/12/17 11:40:49 1.1 +++ /home/repository/moby/moby-live/Java/src/main/org/inb/biomoby/central/gui/renderer/EntityTreeCellRenderer.java 2010/05/27 12:17:58 1.2 @@ -10,7 +10,13 @@ package org.inb.biomoby.central.gui.renderer; +import java.awt.Color; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.StringReader; +import javax.swing.JToolTip; import javax.swing.JTree; +import javax.swing.UIManager; import javax.swing.tree.DefaultMutableTreeNode; import org.inb.biomoby.shared.registry.AbstractEntity; @@ -22,6 +28,8 @@ public class EntityTreeCellRenderer extends AbstractTreeCellRenderer { + private final static int MAX_WIDTH = 300; + @Override public AbstractTreeCellRenderer getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { @@ -40,7 +48,9 @@ else if (object instanceof AbstractEntity) { AbstractEntity entity = (AbstractEntity)object; + setText(entity.getName()); + setToolTipText(tree, entity.getDescription()); } else { @@ -50,4 +60,71 @@ return renderer; } + + private void setToolTipText(JTree tree, String s) + { + if (s != null && s.length() > 0) + { + JToolTip toolTip = tree.createToolTip(); + toolTip.setTipText(s); + + if (toolTip.getMinimumSize().width < MAX_WIDTH) + { + setToolTipText(s); + } + else + { + Color background = toolTip.getBackground(); + if (background == null) + { + background = UIManager.getLookAndFeel().getDefaults().getColor("ToolTip.background"); + + if (background == null) + { + background = Color.WHITE; + } + } + + Color foreground = toolTip.getForeground(); + if (foreground == null) + { + foreground = UIManager.getLookAndFeel().getDefaults().getColor("ToolTip.foreground"); + + if (foreground == null) + { + foreground = Color.BLACK; + } + } + + StringBuilder sb = new StringBuilder(); + sb.append(""); + sb.append("
"); + sb.append(""); + + BufferedReader reader = new BufferedReader(new StringReader(s)); + + try + { + String line; + while((line = reader.readLine()) != null) + { + sb.append(line); + sb.append("
"); + } + } + catch(IOException ex) {} + + sb.append("
"); + sb.append("
"); + sb.append(""); + + setToolTipText(sb.toString()); + } + } + } } From drepchevski at dev.open-bio.org Thu May 27 12:17:58 2010 From: drepchevski at dev.open-bio.org (Dmitry Repchevski) Date: Thu, 27 May 2010 08:17:58 -0400 Subject: [MOBY-guts] biomoby commit Message-ID: <201005271217.o4RCHwOB011620@dev.open-bio.org> drepchevski Thu May 27 08:17:58 EDT 2010 Update of /home/repository/moby/moby-live/Java/src/main/org/inb/biomoby/central/gui In directory dev.open-bio.org:/tmp/cvs-serv11585 Modified Files: AbstractEntityTreePanel.java Log Message: Entity description popup added. moby-live/Java/src/main/org/inb/biomoby/central/gui AbstractEntityTreePanel.java,1.1,1.2 =================================================================== RCS file: /home/repository/moby/moby-live/Java/src/main/org/inb/biomoby/central/gui/AbstractEntityTreePanel.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- /home/repository/moby/moby-live/Java/src/main/org/inb/biomoby/central/gui/AbstractEntityTreePanel.java 2009/12/17 11:40:49 1.1 +++ /home/repository/moby/moby-live/Java/src/main/org/inb/biomoby/central/gui/AbstractEntityTreePanel.java 2010/05/27 12:17:58 1.2 @@ -19,6 +19,7 @@ import javax.swing.JPanel; import javax.swing.JTree; import javax.swing.JViewport; +import javax.swing.ToolTipManager; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.tree.DefaultMutableTreeNode; @@ -53,6 +54,8 @@ tree.setCellRenderer(new EntityTreeCellRenderer()); + ToolTipManager.sharedInstance().registerComponent(tree); + scroll = new DecoratedJScrollPane(tree); scroll.getViewport().addChangeListener(this);