Changeset 2016

Show
Ignore:
Timestamp:
02/21/07 12:56:23 (2 years ago)
Author:
merlimat
Message:

EclipseTracPlugin:

  • Added ability to use multiple Trac servers
  • Added listeners to keep all the views synced with resources
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/.classpath

    r2004 r2016  
    22<classpath> 
    33        <classpathentry path="src" kind="src"/> 
    4         <classpathentry path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5" kind="con"/> 
     4        <classpathentry path="org.eclipse.jdt.launching.JRE_CONTAINER" kind="con"/> 
    55        <classpathentry path="org.eclipse.pde.core.requiredPlugins" kind="con"/> 
    66        <classpathentry path="bin" kind="output"/> 
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/plugin.xml

    r2003 r2016  
    3333            id="mm.eclipse.trac.views.WikiPageHistory" 
    3434            name="Wiki Page History"/> 
     35      <view 
     36            allowMultiple="false" 
     37            category="mm.eclipse.trac" 
     38            class="mm.eclipse.trac.server.ServerView" 
     39            icon="icons/server.png" 
     40            id="mm.eclipse.trac.server.ServerView" 
     41            name="Trac Servers"/> 
    3542   </extension> 
    3643   <extension 
     
    4451            state="true"> 
    4552         <enablement> 
    46                         <objectClass name="mm.eclipse.trac.models.WikiPage"/> 
     53                        <objectClass name="mm.eclipse.trac.models.ModelBase"/> 
    4754         </enablement> 
    4855      </decorator> 
     
    8794            name="Trac"/> 
    8895   </extension> 
     96   <extension 
     97         point="org.eclipse.ui.newWizards"> 
     98      <category 
     99            id="mm.eclipse.trac.server" 
     100            name="Trac"/> 
     101      <wizard 
     102            category="mm.eclipse.trac.server" 
     103            class="mm.eclipse.trac.server.NewTracServer" 
     104            finalPerspective="Trac" 
     105            icon="icons/trac_16.png" 
     106            id="mm.eclipse.trac.server.NewTracServer" 
     107            name="Add a Trac Server" 
     108            project="false"/> 
     109   </extension> 
    89110 
    90111</plugin> 
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/Activator.java

    r2003 r2016  
    8181     * @return the image descriptor 
    8282     */ 
    83     public static ImageDescriptor getImageDescriptor( String path ) 
     83    protected static ImageDescriptor getImageDescriptor( String path ) 
    8484    { 
    8585        return imageDescriptorFromPlugin( PLUGIN_ID, path ); 
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/editors/WikiCompletionProcessor.java

    r2003 r2016  
    1515 
    1616import mm.eclipse.trac.Activator; 
     17import mm.eclipse.trac.Images; 
    1718import mm.eclipse.trac.editors.model.WikiMacro; 
    18 import mm.eclipse.trac.xmlrpc.Trac; 
    19  
    20 import org.eclipse.jface.resource.ImageDescriptor; 
    21 import org.eclipse.jface.resource.ImageRegistry; 
     19import mm.eclipse.trac.models.WikiPage; 
     20 
    2221import org.eclipse.jface.text.BadLocationException; 
    2322import org.eclipse.jface.text.IDocument; 
     
    3837import org.eclipse.jface.text.templates.TemplateException; 
    3938import org.eclipse.jface.text.templates.TemplateProposal; 
    40 import org.eclipse.swt.graphics.Image; 
    4139 
    4240public class WikiCompletionProcessor implements IContentAssistProcessor 
     
    5856    } 
    5957     
    60     private static final String    TemplateIcon    = "icons/template.gif"; 
    61      
    62     private static final String    WordIcon        = "icons/word.png"; 
    63      
    64     private static final String    MacroIcon       = "icons/macro.gif"; 
    65      
    6658    private static final String    TemplateContext = "mm.eclipse.trac.templates"; 
    6759     
    68     private static List<WikiMacro> macros          = null; 
     60    private List<WikiMacro>        macros          = null; 
    6961     
    7062    private final WikiSourceEditor editor; 
     
    129121    private List<ICompletionProposal> computeMacroProposals( ITextViewer viewer, 
    130122                                                             IRegion region, String prefix ) 
    131     {         
     123    { 
    132124        List<ICompletionProposal> result = new ArrayList<ICompletionProposal>(); 
    133125         
     
    141133                ICompletionProposal prop = new CompletionProposal( replace, region 
    142134                        .getOffset(), prefix.length(), replace.length() - 3, 
    143                                                                    getImage( MacroIcon ), 
     135                                                                   Images.get( Images.Macro ), 
    144136                                                                   macro.getName(), info, 
    145137                                                                   "Bla bla bla bla" ); 
     
    198190            result.add( new CompletionProposal( word, region.getOffset(), 
    199191                                                prefix.length(), word.length(), 
    200                                                 getImage( WordIcon ), null, null, null ) ); 
     192                                                Images.get( Images.Word ), null, null, null ) ); 
    201193        } 
    202194         
     
    235227             
    236228            matches.add( new TemplateProposal( template, context, region, 
    237                                                getImage( TemplateIcon ), 1 ) ); 
     229                                               Images.get( Images.Template ), 1 ) ); 
    238230        } 
    239231         
     
    242234    } 
    243235     
    244     private static List<WikiMacro> getMacros() 
     236    private List<WikiMacro> getMacros() 
    245237    { 
    246238        if ( macros != null ) return macros; 
    247239         
    248         Map<String, String> macroMap = Trac.getInstance().getWikiExt().getMacros(); 
     240        WikiPage page = ((WikiEditorInput) editor.getEditorInput()).getWikiPage(); 
     241         
     242        Map<String, String> macroMap = page.getServer().getWikiExt().getMacros(); 
    249243         
    250244        macros = new ArrayList<WikiMacro>( macroMap.size() ); 
     
    279273    } 
    280274     
    281     /** 
    282      * Always return the default image. 
    283      */ 
    284     private Image getImage( String icon ) 
    285     { 
    286         ImageRegistry registry = Activator.getDefault().getImageRegistry(); 
    287         Image image = registry.get( icon ); 
    288         if ( image == null ) 
    289         { 
    290             ImageDescriptor desc = Activator.getImageDescriptor( icon ); 
    291             registry.put( icon, desc ); 
    292             image = registry.get( icon ); 
    293         } 
    294         return image; 
    295     } 
    296      
    297275    public IContextInformation[] computeContextInformation( ITextViewer viewer, int offset ) 
    298276    { 
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/editors/WikiContentOutlinePage.java

    r2003 r2016  
    11package mm.eclipse.trac.editors; 
    22 
    3 import java.text.MessageFormat; 
    4  
    5 import mm.eclipse.trac.Activator; 
    6 import mm.eclipse.trac.Log; 
     3import mm.eclipse.trac.Images; 
    74import mm.eclipse.trac.editors.model.WikiSection; 
    85import mm.eclipse.trac.editors.model.WikiTextParser; 
    96 
    10 import org.eclipse.jface.text.BadPositionCategoryException; 
    117import org.eclipse.jface.text.DefaultPositionUpdater; 
    12 import org.eclipse.jface.text.DocumentEvent; 
    138import org.eclipse.jface.text.DocumentPartitioningChangedEvent; 
    149import org.eclipse.jface.text.IDocument; 
     
    1611import org.eclipse.jface.text.IDocumentPartitioningListenerExtension2; 
    1712import org.eclipse.jface.text.IPositionUpdater; 
    18 import org.eclipse.jface.text.ITypedRegion; 
    19 import org.eclipse.jface.text.Position; 
    2013import org.eclipse.jface.viewers.AbstractTreeViewer; 
    2114import org.eclipse.jface.viewers.IStructuredContentProvider; 
     
    3225 
    3326public class WikiContentOutlinePage extends ContentOutlinePage implements 
    34         IDocumentPartitioningListener, IDocumentPartitioningListenerExtension2, 
    35         IPositionUpdater 
     27        IDocumentPartitioningListener, IDocumentPartitioningListenerExtension2 
    3628{ 
    37     private IDocumentProvider provider; 
     29    private WikiSourceEditor editor; 
    3830     
    39     private WikiSourceEditor  editor; 
    40      
    41     private IPositionUpdater  positionsUpdater; 
     31    private IPositionUpdater positionsUpdater; 
    4232     
    4333    public WikiContentOutlinePage( IDocumentProvider provider, WikiSourceEditor editor ) 
    4434    { 
    45         this.provider = provider; 
    4635        this.editor = editor; 
    4736    } 
     
    6049        positionsUpdater = new DefaultPositionUpdater( WikiTextParser.PositionCategory ); 
    6150        document.addPositionUpdater( positionsUpdater ); 
    62         // document.addPositionUpdater( this ); 
    63          
    6451        document.addDocumentPartitioningListener( this ); 
    6552         
     
    7865            { 
    7966                WikiSection section = (WikiSection) obj; 
    80                 String s = MessageFormat 
    81                         .format( "editor.selectAndReveal( {0}, {1} );", section 
    82                                 .getOffset(), section.getLength() ); 
    83                 Log.info( s ); 
    84                  
    8567                editor.selectAndReveal( section.getOffset(), section.getLength() ); 
    8668            } 
     
    10890     
    10991    public void documentPartitioningChanged( IDocument document ) 
    110     { 
    111         Log.info( "Has changed!" ); 
    112         /* 
    113          * try { Position[] newpositions = document .getPositions( 
    114          * WikiPartitionScanner.SectionToken ); 
    115          *  
    116          * if ( positions != null ) { 
    117          */ 
    118         // document partitioning changed, wholesale replace 
    119         /* 
    120          * } 
    121          *  
    122          * positions = newpositions; } catch ( BadPositionCategoryException e ) { 
    123          * Log.error( "Unexpected error in RawPartitonModel::updatePositions", e ); 
    124          * positions = new Position[0]; } 
    125          */ 
    126     } 
    127      
    128     /** 
    129      * The manipulation described by the document event will be performed. 
    130      *  
    131      * @param event 
    132      *            the document event describing the document change 
    133      */ 
    134     public void documentAboutToBeChanged( DocumentEvent event ) 
    13592    {} 
    136      
    137     /** 
    138      * The manipulation described by the document event has been performed. 
    139      *  
    140      * @param event 
    141      *            the document event describing the document change 
    142      */ 
    143     public void documentChanged( DocumentEvent event ) 
    144     { 
    145         try 
    146         { 
    147             for ( Position p : event.getDocument() 
    148                     .getPositions( WikiTextParser.PositionCategory ) ) 
    149             { 
    150                 Log.info( "Position: " + p.offset + ", " + p.length ); 
    151             } 
    152         } catch ( BadPositionCategoryException e ) 
    153         { 
    154             // TODO Auto-generated catch block 
    155             e.printStackTrace(); 
    156         } 
    157     } 
    158      
    159     public void update( DocumentEvent event ) 
    160     { 
    161         Log.info( "Changed position:" + event.getOffset() ); 
    162          
    163         IDocument doc = editor.getDocument(); 
    164         try 
    165         { 
    166             for ( Position p : doc.getPositions( WikiTextParser.PositionCategory ) ) 
    167             { 
    168                 p.offset += 5; 
    169                 Log.info( "Update Position: " + p.offset + ", " + p.length ); 
    170             } 
    171         } catch ( BadPositionCategoryException e ) 
    172         { 
    173             // TODO Auto-generated catch block 
    174             e.printStackTrace(); 
    175         } 
    176          
    177         WikiSection rootSection = (WikiSection) getTreeViewer().getInput(); 
    178          
    179         ITypedRegion region = doc.getDocumentPartitioner() 
    180                 .getPartition( event.getOffset() ); 
    181         // Log.info( "Found region: " + region.getType() + " - " + 
    182         // region.getOffset() ); 
    183          
    184         // WikiSection current = rootSection.find( event.getOffset(), -1, null 
    185         // ); 
    186         // if ( current != null ) 
    187         // { 
    188         // Log.info( "We are in section: " + current.getName() ); 
    189         // } 
    190     } 
    19193     
    19294    // //////////////////////////////////////////////////////////// 
     
    229131    { 
    230132         
    231         private static final Image stepIcon = createImage( "step.gif" ); 
    232          
    233         public static Image createImage( String icon ) 
    234         { 
    235             return Activator.getImageDescriptor( "icons/" + icon ).createImage(); 
    236         } 
    237          
    238133        public String getText( Object element ) 
    239134        { 
     
    243138        public Image getImage( Object element ) 
    244139        { 
    245             if ( element instanceof WikiSection ) return stepIcon
     140            if ( element instanceof WikiSection ) return Images.get( Images.Step )
    246141            return super.getImage( element ); 
    247142        } 
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/editors/WikiEditorInput.java

    r2003 r2016  
    44package mm.eclipse.trac.editors; 
    55 
    6 import mm.eclipse.trac.Activator
     6import mm.eclipse.trac.Images
    77import mm.eclipse.trac.models.WikiPage; 
    88 
     
    5555    public ImageDescriptor getImageDescriptor() 
    5656    { 
    57         return Activator.getImageDescriptor( "icons/trac_16.png" ); 
     57        return Images.getDescriptor( Images.Trac16 ); 
    5858    } 
    5959     
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/editors/WikiEditor.java

    r2003 r2016  
    22 
    33import mm.eclipse.trac.Log; 
     4import mm.eclipse.trac.models.WikiPage; 
    45 
    56import org.eclipse.core.resources.IMarker; 
     
    177178            String editorText = editor.getDocumentProvider() 
    178179                    .getDocument( editor.getEditorInput() ).get(); 
    179             wikiPreview.showContent( editorText ); 
     180            WikiPage page = (WikiPage)((WikiEditorInput)editor.getEditorInput()).getWikiPage(); 
     181            wikiPreview.showContent( page, editorText ); 
    180182            wikiPreview.setFocus(); 
    181183        } 
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/editors/WikiPreview.java

    r2003 r2016  
    22 
    33import mm.eclipse.trac.Log; 
    4 import mm.eclipse.trac.xmlrpc.Trac
     4import mm.eclipse.trac.models.WikiPage
    55 
    66import org.eclipse.swt.SWT; 
     
    5555    } 
    5656     
    57     public void showContent( String wikiSource ) 
     57    public void showContent( WikiPage page, String wikiSource ) 
    5858    { 
    5959        try 
    6060        { 
    61              
    62             String htmlContent = Trac.getInstance().getWiki().wikiToHtml( 
     61            String htmlContent = page.getServer().getWiki().wikiToHtml( 
    6362                    wikiSource ); 
    6463             
    6564            String content; 
    66             String serverUrl = Trac.getInstance().getServerURL(); 
     65            String serverUrl = page.getServer().getUrl().toString(); 
    6766            if ( !serverUrl.endsWith( "/" ) ) 
    6867                serverUrl += "/"; 
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/Log.java

    r2003 r2016  
    1717    public static void warning( String message ) 
    1818    { 
    19         log( Status.WARNING, message, null ); 
     19        warning( message, null ); 
     20    } 
     21     
     22    public static void warning( String message, Exception e ) 
     23    { 
     24        log( Status.WARNING, message, e ); 
    2025    } 
    2126     
     
    2732    private static void log( int level, String message, Exception e ) 
    2833    { 
    29         Activator.getDefault().getLog() 
    30                 .log( 
    31                         new Status( level, Activator.PLUGIN_ID, Status.OK, 
    32                                 message, e ) ); 
     34        Activator.getDefault().getLog().log( 
     35                                             new Status( level, Activator.PLUGIN_ID, 
     36                                                         Status.OK, message, e ) ); 
    3337    } 
    3438} 
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/models/ITracListener.java

    r2003 r2016  
    88 *  
    99 */ 
    10 public interface IWikiPageListener 
     10public interface ITracListener 
    1111{ 
    1212    /** 
    1313     * Notify when the observed page gets modified. 
    1414     *  
    15      * @param pag
     15     * @param resourc
    1616     *            The modified wiki page. 
    1717     */ 
    18     void wikiPageChanged( Object page ); 
     18    void tracResourceModified( Object resource ); 
    1919     
    2020} 
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/models/ModelBase.java

    r2003 r2016  
    1212public abstract class ModelBase 
    1313{ 
    14     private WeakCollection<IWikiPageListener> listeners; 
     14    private WeakCollection<ITracListener> listeners; 
    1515     
    16     public void addListener( IWikiPageListener listener ) 
     16    public void addListener( ITracListener listener ) 
    1717    { 
    18         if ( listeners == null ) 
    19             listeners = new WeakCollection<IWikiPageListener>(); 
     18        if ( listeners == null ) listeners = new WeakCollection<ITracListener>(); 
    2019         
    2120        listeners.add( listener ); 
    2221    } 
    2322     
    24     public void removeListener( IWikiPageListener listener ) 
     23    public void removeListener( ITracListener listener ) 
    2524    { 
    2625        if ( listeners != null ) 
     
    3231    protected void notifyChanged() 
    3332    { 
    34         for ( IWikiPageListener listener : listeners ) 
    35             listener.wikiPageChanged( this ); 
     33        if ( listeners == null ) return; 
     34        /* 
     35        Display.getDefault().asyncExec( new Runnable() { 
     36            public void run() 
     37            { 
     38          */      for ( ITracListener listener : listeners ) 
     39                    listener.tracResourceModified( this ); 
     40          /*  } 
     41        } ); */ 
    3642    } 
    3743     
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/models/WikiPage.java

    r2003 r2016  
    1010import java.util.TreeSet; 
    1111 
    12 import mm.eclipse.trac.xmlrpc.Trac; 
    1312import mm.eclipse.trac.xmlrpc.WikiExt; 
    1413 
     
    1716public class WikiPage extends ModelBase implements IAdaptable 
    1817{ 
     18    private TracServer            server; 
     19     
    1920    private String                fullName; 
    2021    private boolean               exists      = false; 
     
    2829    private List<WikiPageVersion> versions    = null; 
    2930     
    30     public WikiPage( String fullName, boolean exists ) 
    31     { 
    32         this.fullName = fullName; 
    33         this.exists = exists; 
    34          
    35         WikiExt wikiExt = Trac.getInstance().getWikiExt(); 
    36         this.hasChildren = wikiExt.hasChildren( fullName ); 
    37     } 
    38      
    39     public WikiPage( String fullName, boolean exists, boolean hasChildren ) 
    40     { 
     31    public WikiPage( TracServer server, String fullName, boolean exists ) 
     32    { 
     33        this( server, fullName, exists, server.getWikiExt().hasChildren( fullName ) ); 
     34    } 
     35     
     36    public WikiPage( TracServer server, String fullName, boolean exists, 
     37                     boolean hasChildren ) 
     38    { 
     39        this.server = server; 
    4140        this.fullName = fullName; 
    4241        this.exists = exists; 
     
    4443    } 
    4544     
    46     public WikiPage( String fullName ) 
    47     { 
    48         this( fullName, true ); 
     45    public WikiPage( TracServer server, String fullName ) 
     46    { 
     47        this( server, fullName, true ); 
     48    } 
     49     
     50    /** 
     51     * @return the server 
     52     */ 
     53    public TracServer getServer() 
     54    { 
     55        return server; 
    4956    } 
    5057     
     
    7683    public void addChild( WikiPage child ) 
    7784    { 
    78         if ( children == null ) 
    79             children = new ArrayList<WikiPage>(); 
     85        if ( children == null ) children = new ArrayList<WikiPage>(); 
    8086         
    8187        children.add( child ); 
    8288        child.parent = this; 
     89        notifyChanged(); 
    8390    } 
    8491     
     
    9097    public Collection<WikiPage> getChildren() 
    9198    { 
    92         if ( children != null ) 
    93             return children; 
     99        if ( children != null ) return children; 
    94100         
    95101        children = new ArrayList<WikiPage>(); 
    96         WikiExt wikiExt = Trac.getInstance().getWikiExt(); 
     102        WikiExt wikiExt = server.getWikiExt(); 
    97103         
    98104        Map<String, Map<String, Boolean>> childrenMap = wikiExt.getChildren( fullName ); 
     
    104110            boolean exists = attrs.get( "exists" ); 
    105111            boolean hasChildren = attrs.get( "hasChildren" ); 
    106             children.add( new WikiPage( name, exists, hasChildren ) ); 
     112            children.add( new WikiPage( server, name, exists, hasChildren ) ); 
    107113        } 
     114         
    108115        return children; 
    109116    } 
     
    121128    public String getContent() 
    122129    { 
    123         if ( content == null ) 
    124             content = Trac.getInstance().getWiki().getPage( fullName ); 
     130        if ( content == null ) content = server.getWiki().getPage( fullName ); 
    125131        return content; 
    126132    } 
     
    143149        Map<String, String> attributes = new HashMap<String, String>(); 
    144150        attributes.put( "comment", comment ); 
    145         Trac.getInstance().getWiki().putPage( fullName, content, attributes ); 
     151        server.getWiki().putPage( fullName, content, attributes ); 
    146152         
    147153        // Should refresh with newly created version 
     
    153159    public List<WikiPageVersion> getVersions() 
    154160    { 
    155         if ( versions != null ) 
    156             return versions; 
     161        if ( versions != null ) return versions; 
    157162         
    158163        versions = new ArrayList<WikiPageVersion>(); 
    159         Object[] remoteVersions = Trac.getInstance().getWikiExt() 
    160                 .getPageVersions( fullName ); 
     164        Object[] remoteVersions = server.getWikiExt().getPageVersions( fullName ); 
    161165         
    162166        for ( Object o : remoteVersions ) 
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/util/WeakCollection.java

    r2003 r2016  
    199199     
    200200    /** 
    201      * @param <T
     201     * @param <E
    202202     * @param a 
    203203     * @return 
    204      * @see java.util.Collection#toArray(T[]) 
    205      */ 
    206     public <T> T[] toArray( T[] a ) 
    207     { 
    208         T[] array; 
     204     * @see java.util.Collection#toArray(E[]) 
     205     */ 
     206    @SuppressWarnings("unchecked") 
     207    public <E> E[] toArray( E[] a ) 
     208    { 
     209        Object[] array; 
    209210        if ( a.length >= data.size() ) 
    210211            array = a; 
    211         else array = (T[]) new Object[data.size()]; 
     212        else array = new Object[data.size()]; 
    212213         
    213214        int i = 0; 
     
    215216            array[i++] = ((WeakReference<T>) item).get(); 
    216217         
    217         return array; 
     218        return (E[]) array; 
    218219    } 
    219220     
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/views/actions/CommitPage.java

    r2003 r2016  
    11package mm.eclipse.trac.views.actions; 
    22 
    3 import mm.eclipse.trac.Activator
     3import mm.eclipse.trac.Images
    44import mm.eclipse.trac.Log; 
    55import mm.eclipse.trac.models.WikiPage; 
     
    99import org.eclipse.jface.viewers.ISelection; 
    1010import org.eclipse.jface.viewers.IStructuredSelection; 
    11 import org.eclipse.jface.viewers.TreeViewer; 
     11import org.eclipse.jface.viewers.StructuredViewer; 
    1212import org.eclipse.jface.window.Window; 
    1313 
    1414public class CommitPage extends Action 
    1515{ 
    16     private static final String ImagePath = "icons/page-commit.gif"
     16    private final StructuredViewer    viewer
    1717     
    18     private final TreeViewer    viewer; 
    19      
    20     public CommitPage( TreeViewer viewer ) 
     18    public CommitPage( StructuredViewer viewer ) 
    2119    { 
    2220        this.viewer = viewer; 
    2321        setText( "Commit page" ); 
    2422        setToolTipText( "Commit page in Trac database" ); 
    25         setImageDescriptor( Activator.getImageDescriptor( ImagePath ) ); 
     23        setImageDescriptor( Images.getDescriptor( Images.PageCommit ) ); 
    2624    } 
    2725     
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/views/actions/OpenEditor.java

    r2003 r2016  
    1313import org.eclipse.jface.viewers.ISelection; 
    1414import org.eclipse.jface.viewers.IStructuredSelection; 
    15 import org.eclipse.jface.viewers.TreeViewer; 
     15import org.eclipse.jface.viewers.StructuredViewer; 
     16import org.eclipse.swt.SWT; 
    1617import org.eclipse.ui.IWorkbenchPage; 
    1718import org.eclipse.ui.IWorkbenchWindow; 
     
    2627public class OpenEditor extends Action implements IDoubleClickListener 
    2728{ 
    28     TreeViewer viewer; 
     29    StructuredViewer viewer; 
    2930     
    30     public OpenEditor( TreeViewer viewer ) 
     31    public OpenEditor( StructuredViewer viewer ) 
    3132    { 
    3233        this.viewer = viewer; 
    3334        setText( "Open" ); 
    3435        setToolTipText( "Open wiki page in editor." ); 
     36        setAccelerator( SWT.F3 ); 
    3537        viewer.addDoubleClickListener( this ); 
    3638    } 
     
    4951        { 
    5052            WikiPage page = (WikiPage) obj; 
    51             Log.info( "Opening: " + page ); 
    5253             
    5354            WikiEditorInput wikiEditorInput = new WikiEditorInput( page ); 
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/views/TracLabelDecorator.java

    r2003 r2016  
    99package mm.eclipse.trac.views; 
    1010 
    11 import mm.eclipse.trac.Activator; 
     11import mm.eclipse.trac.Images; 
     12import mm.eclipse.trac.models.TracServer; 
    1213import mm.eclipse.trac.models.WikiPage; 
    1314 
    14 import org.eclipse.jface.resource.ImageDescriptor; 
    1515import org.eclipse.jface.viewers.IDecoration; 
    1616import org.eclipse.jface.viewers.ILabelProviderListener; 
     
    2727{ 
    2828     
    29     /** The integer value representing the placement options */ 
    30     private static int      quadrant = IDecoration.BOTTOM_RIGHT; 
    31      
    32     /** The icon image location in the project folder */ 
    33     private static String   iconPath = "icons/modified.png"; 
    34                                                                   
    35     /** 
    36      * The image description used in 
    37      * <code>addOverlay(ImageDescriptor, int)</code> 
    38      */ 
    39     private ImageDescriptor descriptor = Activator.getImageDescriptor( iconPath ); 
    40      
    4129    public void decorate( Object element, IDecoration decoration ) 
    4230    { 
    43         WikiPage page = (WikiPage)element; 
    44         if ( page.isDirty() ) 
     31        if ( element instanceof TracServer ) 
    4532        { 
    46             decoration.addOverlay( descriptor, quadrant ); 
     33            TracServer server = (TracServer) element; 
     34            if ( !server.isValid() ) 
     35                decoration.addOverlay( Images.getDescriptor( Images.Error ), 
     36                                       IDecoration.TOP_LEFT ); 
     37             
     38        } 
     39        else if ( element instanceof WikiPage ) 
     40        { 
     41            WikiPage page = (WikiPage) element; 
     42            if ( page.isDirty() ) 
     43            { 
     44                decoration.addOverlay( Images.getDescriptor( Images.Modified ), 
     45                                       IDecoration.BOTTOM_RIGHT ); 
     46            } 
    4747        } 
    4848    } 
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/views/TracLabelProvider.java

    <
    r2003 r2016  
    44package mm.eclipse.trac.views; 
    55 
    6 import mm.eclipse.trac.Activator; 
     6import mm.eclipse.trac.Images; 
     7import mm.eclipse.trac.models.TracServer; 
     8import mm.eclipse.trac.models.TracServerList; 
    79import mm.eclipse.trac.models.WikiPage; 
    810 
     
    1315 
    1416/** 
    15  * @author mat 
     17 * @author Matteo Merli 
    1618 *  
    1719 */ 
    18 public class TracLabelProvider extends LabelProvider  
     20public class TracLabelProvider extends LabelProvider 
    1921{ 
    2022     
     23    @Override 
    2124    public String getText( Object obj ) 
    22