Changeset 2275

Show
Ignore:
Timestamp:
06/03/07 16:11:50 (2 years ago)
Author:
merlimat
Message:

EclipseTracPlugin:

It is possible to edit server profiles.
Closes #1603

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • eclipsetracplugin/eclipse/trunk/EclipseTrac/feature.xml

    r2274 r2275  
    33      id="EclipseTrac" 
    44      label="Eclipse Trac" 
    5       version="1.0.4
     5      version="1.0.5
    66      provider-name="Matteo Merli" 
    77      plugin="mm.eclipse.trac"> 
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/META-INF/MANIFEST.MF

    r2274 r2275  
    33Bundle-Name: Trac Plug-in 
    44Bundle-SymbolicName: mm.eclipse.trac; singleton:=true 
    5 Bundle-Version: 1.0.4 
     5Bundle-Version: 1.0.5 
    66Bundle-Activator: mm.eclipse.trac.Activator 
    77Require-Bundle: org.eclipse.ui, 
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/models/TracServer.java

    r2161 r2275  
    66import java.net.URL; 
    77 
     8import mm.eclipse.trac.Log; 
    89import mm.eclipse.trac.xmlrpc.Trac; 
    910import mm.eclipse.trac.xmlrpc.Wiki; 
     
    6162        } catch ( Throwable t ) 
    6263        { 
     64            Log.warning( "Error connecting to server '" + url.toString() + "': " + t.getMessage(), new Exception( t.getCause() ) ); 
    6365            connected = false; 
    6466            problems = true; 
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/models/TracServerList.java

    r2161 r2275  
    1414import java.util.Iterator; 
    1515import java.util.List; 
     16import java.util.SortedMap; 
     17import java.util.TreeMap; 
    1618 
    1719import javax.xml.parsers.DocumentBuilder; 
     
    4345public class TracServerList extends ModelBase implements Iterable<TracServer> 
    4446{ 
    45     private List<TracServer>    servers; 
     47    private SortedMap<String,TracServer>    servers; 
    4648     
    4749    public List<TracServer> getServers() 
    4850    { 
    49         return servers
     51        return new ArrayList<TracServer>( servers.values() )
    5052    } 
    5153     
    5254    public TracServer getServerByName( String name )  
    5355    { 
    54         for ( TracServer server : servers ) 
    55             if ( server.getName().equals( name ) ) 
    56                 return server; 
    57          
    58         return null; 
     56        return servers.get( name ); 
     57    } 
     58     
     59    /** 
     60     *  @param name Trac server name to check 
     61     * @return 
     62     */ 
     63    public boolean hasServerName( String name ) 
     64    { 
     65        return servers.get( name ) != null; 
    5966    } 
    6067     
    6168    public void addServer( TracServer server ) 
    6269    { 
    63         servers.add( server ); 
     70        servers.put( server.getName(), server ); 
    6471        notifyChanged(); 
    6572    } 
     
    6774    public void removeServer( TracServer server ) 
    6875    { 
    69         servers.remove( server ); 
     76        servers.remove( server.getName() ); 
    7077        notifyChanged(); 
    7178    } 
     
    7380    private TracServerList() 
    7481    { 
    75         servers = new ArrayList<TracServer>(); 
     82        servers = new TreeMap<String,TracServer>(); 
    7683        loadPreferences(); 
    7784         
     
    109116                                                        TracServer server = new TracServer(name,new URL(url),username,password,Boolean.parseBoolean(anonymous)); 
    110117                                                        server.connect(); 
    111                                                         servers.add(server); 
     118                                                        servers.put( name, server ); 
    112119                                                } 
    113120                                        } 
     
    135142        if ( servers == null ) return null; 
    136143         
    137         return servers.iterator(); 
     144        return servers.values().iterator(); 
    138145    } 
    139146     
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/server/NewTracServer.java

    r2016 r2275  
    22 
    33import mm.eclipse.trac.Log; 
     4import mm.eclipse.trac.models.TracServer; 
    45import mm.eclipse.trac.models.TracServerList; 
    56 
     
    2223{ 
    2324    private NewTracServerPage page; 
     25    private TracServer        server; 
    2426     
    2527    /** 
     
    2830    public NewTracServer() 
    2931    { 
     32        this( null ); 
     33    } 
     34     
     35    public NewTracServer( TracServer tracServer ) 
     36    { 
    3037        super(); 
    3138        setNeedsProgressMonitor( true ); 
     39        this.server = tracServer; 
    3240    } 
    3341     
     
    3846    public void addPages() 
    3947    { 
    40         page = new NewTracServerPage(); 
     48        page = new NewTracServerPage( server ); 
    4149        addPage( page ); 
    4250    } 
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/server/NewTracServerPage.java

    r2274 r2275  
    66import mm.eclipse.trac.Images; 
    77import mm.eclipse.trac.models.TracServer; 
     8import mm.eclipse.trac.models.TracServerList; 
    89 
    910import org.eclipse.jface.dialogs.IDialogPage; 
     
    1415import org.eclipse.swt.events.SelectionEvent; 
    1516import org.eclipse.swt.events.SelectionListener; 
    16 import org.eclipse.swt.graphics.Color; 
    1717import org.eclipse.swt.layout.GridData; 
    1818import org.eclipse.swt.layout.GridLayout; 
     
    4242    private TracServer server; 
    4343     
     44    private boolean    isEditing; 
     45    private String     oldName; 
     46     
    4447    public NewTracServerPage() 
     48    { 
     49        this( null ); 
     50    } 
     51     
     52    public NewTracServerPage( TracServer tracServer ) 
    4553    { 
    4654        super( "wizardPage" ); 
     
    4957        setDescription( "This wizard creates a new connections with a Trac server." ); 
    5058        setPageComplete( false ); 
     59        server = tracServer; 
     60        isEditing = server != null; 
     61        if ( isEditing ) 
     62            oldName = server.getName(); 
    5163    } 
    5264     
     
    6880        GridData gd = new GridData( GridData.FILL_HORIZONTAL ); 
    6981        serverName.setLayoutData( gd ); 
    70         serverName.addModifyListener( this ); 
     82        serverName.setToolTipText( "A human-friendly name for this server profile." ); 
    7183         
    7284        label = new Label( container, SWT.NULL ); 
     
    7688        gd = new GridData( GridData.FILL_HORIZONTAL ); 
    7789        serverUrl.setLayoutData( gd ); 
    78         serverUrl.addModifyListener( this ); 
     90        serverUrl.setToolTipText( "The base URL of the Trac project" ); 
    7991         
    8092        anonymous = new Button( container, SWT.CHECK ); 
     
    8294        gd = new GridData( GridData.FILL_HORIZONTAL ); 
    8395        anonymous.setLayoutData( gd ); 
    84         anonymous.addSelectionListener( new SelectionListener() { 
    85             public void widgetDefaultSelected( SelectionEvent e ) 
    86             {} 
    87              
    88             public void widgetSelected( SelectionEvent e ) 
    89             { 
    90                 username.setEnabled( !anonymous.getSelection() ); 
    91                 password.setEnabled( !anonymous.getSelection() ); 
    92                 modifyText( null ); 
    93             } 
    94         } ); 
     96        anonymous.setToolTipText( "Whether to use anonymous login or not" ); 
    9597         
    9698        new Label( container, SWT.NULL ); 
     
    102104        gd = new GridData( GridData.FILL_HORIZONTAL ); 
    103105        username.setLayoutData( gd ); 
    104         username.addModifyListener( this ); 
     106        username.setToolTipText( "Your Trac account username" ); 
    105107         
    106108        label = new Label( container, SWT.NULL ); 
     
    111113        password.setLayoutData( gd ); 
    112114        password.setEchoChar( (char) 0x2022 ); 
    113         password.addModifyListener( this ); 
     115        password.setToolTipText( "Your Trac account password" ); 
    114116         
    115117        validateButton = new Button( container, SWT.PUSH ); 
    116118        validateButton.setText( "Validate server connection" ); 
     119         
     120        if ( isEditing ) 
     121        { 
     122            serverName.setText( server.getName() ); 
     123            serverUrl.setText( server.getUrl().toString() ); 
     124            anonymous.setSelection( server.isAnonymous() ); 
     125            if ( server.getUsername() != null ) 
     126                username.setText( server.getUsername() ); 
     127            password.setText( server.getPassword() ); 
     128        } 
     129         
     130        serverName.addModifyListener( this ); 
     131        serverUrl.addModifyListener( this ); 
     132        username.addModifyListener( this ); 
     133        password.addModifyListener( this ); 
     134         
     135        anonymous.addSelectionListener( new SelectionListener() { 
     136            public void widgetDefaultSelected( SelectionEvent e ) 
     137            {} 
     138             
     139            public void widgetSelected( SelectionEvent e ) 
     140            { 
     141                username.setEnabled( !anonymous.getSelection() ); 
     142                password.setEnabled( !anonymous.getSelection() ); 
     143                modifyText( null ); 
     144            } 
     145        } ); 
     146         
    117147        validateButton.addSelectionListener( new SelectionListener() { 
    118  
     148             
    119149            public void widgetDefaultSelected( SelectionEvent e ) 
    120             { 
    121             } 
    122  
     150            {} 
     151             
    123152            public void widgetSelected( SelectionEvent e ) 
    124153            { 
     
    128157                    validateButton.setText( "Connection with server is OK." ); 
    129158                    validateButton.setEnabled( false ); 
    130                 } 
    131                 else 
     159                } else 
    132160                { 
    133161                    validateButton.setText( "Cannot connect to server." ); 
     
    156184        } 
    157185         
     186        if ( ! isEditing || ! oldName.equals( getServerName() ) ) 
     187        { 
     188            if ( TracServerList.getInstance().hasServerName( getServerName() ) ) 
     189            { 
     190                updateStatus( "Name '" + getServerName() + "' is already used." ); 
     191                return; 
     192            } 
     193        } 
     194         
    158195        if ( getServerUrl().length() == 0 ) 
    159196        { 
     
    188225         
    189226        setErrorMessage( null ); 
     227        validateButton.setEnabled( true ); 
    190228    } 
    191229     
     
    196234        try 
    197235        { 
    198             url = new URL( getServerUrl() ); 
    199              
    200             server = new TracServer( getServerName(), url, getUsername(), getPassword(), 
    201                                      getAnonymous() ); 
     236            String s = getServerUrl(); 
     237             
     238            // Remove trailing Trac URL paths 
     239            if ( s.endsWith( "/login/xmlrpc" ) ) 
     240            { 
     241                s = s.replace( "/login/xmlrpc", "" ); 
     242            } else if ( s.endsWith( "/xmlrpc" ) ) 
     243            { 
     244                s = s.replace( "/xmlrpc", "" ); 
     245            } 
     246             
     247            url = new URL( s ); 
     248             
     249            if ( server == null ) 
     250                server = new TracServer( getServerName(), url, getUsername(), getPassword(), 
     251                                         getAnonymous() ); 
     252            else 
     253            { 
     254                server.disconnect(); 
     255                server.setName( getServerName() ); 
     256                server.setUrl( url ); 
     257                server.setAnonymous( getAnonymous() ); 
     258                server.setUsername( getUsername() ); 
     259                server.setPassword( getPassword() ); 
     260            } 
     261             
    202262            server.connect(); 
    203             if ( !server.isConnected() ) 
     263            if ( server.isConnected() ) 
     264            { 
     265                setErrorMessage( null ); 
     266                setPageComplete( true ); 
     267            } 
     268            else 
    204269            { 
    205270                updateStatus( "Connection with server failed." ); 
    206                 return; 
    207271            } 
    208272             
     
    210274        { 
    211275            updateStatus( "The URL is not valid." ); 
    212             return; 
    213         } 
    214          
    215         setErrorMessage( null ); 
    216         setPageComplete( true ); 
     276        } 
    217277    } 
    218278     
     
    222282        setErrorMessage( message ); 
    223283        setPageComplete( false ); 
     284        validateButton.setEnabled( false ); 
    224285    } 
    225286     
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/server/ServerView.java

    r2016 r2275  
    175175    { 
    176176         
     177        @SuppressWarnings("unchecked") 
    177178        public Object[] getElements( Object inputElement ) 
    178179        { 
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/views/actions/TracServerActionProvider.java

    r2274 r2275  
    77import mm.eclipse.trac.models.TracServer; 
    88import mm.eclipse.trac.models.TracServerList; 
     9import mm.eclipse.trac.server.NewTracServer; 
    910 
    1011import org.eclipse.jface.action.Action; 
     
    1415import org.eclipse.jface.viewers.IStructuredSelection; 
    1516import org.eclipse.jface.viewers.StructuredViewer; 
     17import org.eclipse.jface.wizard.WizardDialog; 
    1618import org.eclipse.swt.widgets.Display; 
    1719 
     
    2628    private Action           connectAction; 
    2729    private Action           disconnectAction; 
     30    private Action           editAction; 
    2831    private Action           deleteAction; 
    2932     
     
    4245            public void run() 
    4346            { 
    44                 if (!viewer.getSelection().isEmpty()) { 
     47                if ( !viewer.getSelection().isEmpty() ) 
     48                { 
    4549                    TracServer server = (TracServer) ((IStructuredSelection) viewer 
    4650                            .getSelection()).getFirstElement(); 
     
    6165            public void run() 
    6266            { 
    63                 if (!viewer.getSelection().isEmpty()) { 
     67                if ( !viewer.getSelection().isEmpty() ) 
     68                { 
    6469                    TracServer server = (TracServer) ((IStructuredSelection) viewer 
    6570                            .getSelection()).getFirstElement(); 
     
    7580        disconnectAction.setText( "Disconnect from server" ); 
    7681         
     82        editAction = new Action() { 
     83            @Override 
     84            public void run() 
     85            { 
     86                if ( viewer.getSelection().isEmpty() ) 
     87                    return; 
     88                 
     89                TracServer server = (TracServer) ((IStructuredSelection) viewer 
     90                        .getSelection()).getFirstElement(); 
     91                 
     92                // Create the wizard 
     93                WizardDialog dialog = new WizardDialog( viewer.getControl().getShell(), 
     94                                                        new NewTracServer( server ) ); 
     95                dialog.open(); 
     96            } 
     97        }; 
     98         
     99        editAction.setText( "Modify server settings" ); 
     100         
    77101        deleteAction = new Action() { 
    78102            @Override 
    79103            public void run() 
    80104            { 
    81                 if (!viewer.getSelection().isEmpty()) { 
     105                if ( !viewer.getSelection().isEmpty() ) 
     106                { 
    82107                    TracServer server = (TracServer) ((IStructuredSelection) viewer 
    83108                            .getSelection()).getFirstElement(); 
    84109                     
    85110                    // Open a dialog and ask to confirm 
    86                     boolean res = MessageDialog.openQuestion( viewer.getControl() 
    87                             .getShell(), "Confirm Trac server deletion", 
    88                             "Are you sure to delete the '" + server.getName() 
    89                                     + "' server configuration?" ); 
     111                    boolean res = MessageDialog 
     112                            .openQuestion( viewer.getControl().getShell(), 
     113                                           "Confirm Trac server deletion", 
     114                                           "Are you sure to delete the '" 
     115                                                   + server.getName() 
     116                                                   + "' server configuration?" ); 
    90117                     
    91                     if (res != true
     118                    if ( res != true
    92119                        return; 
    93120                     
     
    113140    public void fillMenu( IMenuManager menu, IStructuredSelection selection ) 
    114141    { 
    115         if (selection.size() != 1
     142        if ( selection.size() != 1
    116143            return; 
    117144         
    118         if (selection.getFirstElement() instanceof TracServer) { 
     145        if ( selection.getFirstElement() instanceof TracServer ) 
     146        { 
    119147            TracServer server = (TracServer) selection.getFirstElement(); 
    120148             
     
    129157            menu.add( disconnectAction ); 
    130158            menu.add( new Separator() ); 
     159            menu.add( editAction ); 
    131160            menu.add( deleteAction ); 
    132161        } 
     
    139168     */ 
    140169    public void doubleClick( IStructuredSelection selection ) 
    141     { 
    142     } 
     170    {} 
    143171     
    144172    private static abstract class ServerExecutor implements Runnable 
  • eclipsetracplugin/eclipse/trunk/mm.eclipse.trac/src/mm/eclipse/trac/xmlrpc/Trac.java

    r2274 r2275  
    1515import org.apache.xmlrpc.client.XmlRpcClient; 
    1616import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; 
    17 import org.apache.xmlrpc.client.XmlRpcLiteHttpTransportFactory; 
    18 import org.apache.xmlrpc.client.XmlRpcSunHttpTransport; 
    1917import org.apache.xmlrpc.client.XmlRpcSunHttpTransportFactory; 
    2018 
     
    3432        String sUrl = url.toString(); 
    3533        String sep = sUrl.endsWith( "/" ) ? "" : "/"; 
     34        String path; 
     35        if ( anonymous ) 
     36            path = "xmlrpc"; 
     37        else 
     38            path = "login/xmlrpc"; 
    3639         
    37         config.setServerURL( new URL( sUrl + sep + "login/xmlrpc" ) ); 
     40        config.setServerURL( new URL( sUrl + sep + path ) ); 
    3841         
    3942        if ( !anonymous ) 
  • eclipsetracplugin/eclipse/update/site.xml

    r2274 r2275  
    44      Trac Plugin 
    55   </description> 
    6    <feature url="features/EclipseTrac_1.0.4.jar" id="EclipseTrac" version="1.0.4"> 
     6   <feature url="features/EclipseTrac_1.0.5.jar" id="EclipseTrac" version="1.0.5"> 
    77      <category name="Trac"/> 
    88   </feature>