[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| Re: [udig-devel] menu paths etc for new operations | 
A Gotcha that I've got hit by a number of times with Action Sets is  
that the action set its self has visible has visible set to true!  If  
the default is left then the action set is NOT visible.  Obviously  
not what you want.  That's the likely problem that I can think of.   
As for operation categories, you can't choose where they go they just  
go in the Operations menu and that's it.
Also make sure your path is correct.
Cheers,
Jesse
On 15-Jan-07, at 5:23 PM, Murray Richardson wrote:
Thanks Jesse
I can't control where the categories go in the operations menu. Or  
alternatively if I create a new Action Set > menu (e.g. "Sample  
Menu"), and then use that as the menuPath for the new Operation, it  
just ends up on the menu bar, not in the new menu.  Actually, the  
new menu doesn't even show up at all!
Murray
Jesse Eichar wrote:
On 15-Jan-07, at 6:54 AM, Murray Richardson wrote:
Hope you all had a good weekend!
Trying to wrap up a project and have a few last minute questions if
anyone might be able to help:
(1) I haven't been able to figure out the menu paths to use for  
new operations.  What are they?  Also - is it possible to have  
new subcategories within new categories to better organize  
operations? Finally, is it possible to put new Operations into a  
new Menu altogether (not Operations), but still have them  
accessible under the Operations menu accessed by right-clicking  
layers?
That is an optional attribute by default operations will be in the  
Operation Menu in the category that was declared in the extension  
definition.  The Menu path allows one to place the operation else  
where.  You can find most of the options in the Constants class.    
Look at:
http://svn.geotools.org/udig/branches/1.1.x/udig/plugins/ 
net.refractions.udig.ui/src/net/refractions/udig/ui/Constants.java
(2) Is it possible to reset a postGIS service listed in the  
catalog from
within an operation?  If so, how?
Its not nice... Here's a snippet from the Reset action:
    public static void reset( IService original, IProgressMonitor  
monitor ) {
        IServiceFactory locator = CatalogPlugin.getDefault 
().getServiceFactory();
        ICatalog connections = CatalogPlugin.getDefault 
().getLocalCatalog();
            try {
                final URL ID = original.getIdentifier();
                CatalogUIPlugin.trace("Reset service " +  
original.getIdentifier()); //$NON-NLS-1$
                Map<java.lang.String, java.io.Serializable>  
connectionParams = original
                        .getConnectionParams();
                IService replacement = null; // unknown
                TEST: for( IService candidate : locator.acquire 
(ID, connectionParams) ) {
                    try {
                        CatalogUIPlugin.trace(ID + " :  
connecting"); //$NON-NLS-1$
                        IServiceInfo info = candidate.getInfo 
(monitor);
                        CatalogUIPlugin.trace(ID + " : found " +  
info.getTitle()); //$NON-NLS-1$
                        replacement = candidate;
                        break TEST;
                    } catch (Throwable t) {
                        CatalogUIPlugin.trace(ID + " : ... " +  
t.getLocalizedMessage()); //$NON-NLS-1$
                    }
                }
                if (replacement == null) {
                    return; // not available - should update  
existing service to error?
                }
                connections.replace(ID, replacement);
            } catch (Throwable failed) {
                CatalogUIPlugin.log("Reset failed", failed); // 
$NON-NLS-1$
            }
    }
(3) Is it possible to have more than one target class for an  
operation?  e.g. How do I make an operation apply to resources in  
the catalog view, such as a table in a postGIS service, as well  
as layers in the Project view?
Hmmm.  If I think you will have to do it in a 2 step process.  A  
Layer will adapt to anything a IGeoResource will adapt to.  So if  
your operation operates on a FeatureSource then it will work on  
both an IGeoResource or a Layer.  There are two ways to do this  
the easy way and the more correct way:
Easy:
Make the target a java.sql.Connection. Currenlty only PostGis will  
resolve to SQL.  But the PostGis Service does too so this will  
allow the operation to be run on a PostGisService
Correct:
What you can do is make a net.refractions.udig.catalog.resolvers  
extension so that PostGis GeoResources will resolve to some  
interface of your choosing.  Then set the target of your operation  
to be that interface.  See http://udig.refractions.net/docs/api- 
udig/extension-points/net_refractions_udig_catalog_resolvers.html  
for more info on the Resolvers extension point
Thanks!
Murray
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel
--------------------------------------------------------------------- 
---
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel
--------------------------------------------------------------------- 
---
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.432 / Virus Database: 268.16.12/628 - Release Date:  
1/15/2007 11:04 AM
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel