[Title] Supported to edit repository
authordonghyuk.yang <donghyuk.yang@samsung.com>
Wed, 5 Sep 2012 15:07:51 +0000 (00:07 +0900)
committerdonghyuk.yang <donghyuk.yang@samsung.com>
Wed, 5 Sep 2012 15:07:51 +0000 (00:07 +0900)
Change-Id: I39dd3b87a10b3f7713557ffaa84ea6023aea9b47

org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/AddRepoDialog.java
org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/BuildSystemTab.java
org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/DeviceTab.java
org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/ModifyRepoDialog.java [new file with mode: 0644]
org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/PkgMgrUIMessages.properties

index a8906eb..31ca164 100644 (file)
@@ -1,6 +1,7 @@
 package org.tizen.nativeplatform.pkgmgr.ui;
 
 import java.util.ResourceBundle;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.swt.SWT;
@@ -13,6 +14,7 @@ import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Text;
 
+import org.tizen.common.util.DialogUtil;
 import org.tizen.nativeplatform.pkgmgr.model.Repository;
 import org.tizen.nativeplatform.pkgmgr.model.RepositoryProvider;
 
@@ -78,17 +80,41 @@ public class AddRepoDialog extends Dialog {
        @Override
        protected void okPressed() {
                
-               Repository repo = new Repository();             
+               CopyOnWriteArrayList<Repository> list = null;
+               Repository repo = new Repository();
                repo.setName(nameText.getText());
                repo.setUri(uriText.getText());
-               repo.setCheckDirty(true);
                
                if (resources.getString("PkgMgr.Tab.Buildsystem").equals(tab)) {
-                       RepositoryProvider.INSTANCE.getBuildsystemRepos().add(repo);
+                       list = RepositoryProvider.INSTANCE.getBuildsystemRepos();
+                       // if repository name or url already exist, then return
+                       if (checkRepoExists(list, repo)) {
+                               return;
+                       } else {
+                               repo.setCheckDirty(true);                       
+                               RepositoryProvider.INSTANCE.getBuildsystemRepos().add(repo);
+                       }
                } else if (resources.getString("PkgMgr.Tab.Device").equals(tab)) {
-                       RepositoryProvider.INSTANCE.getDeviceRepos().add(repo);
+                       list = RepositoryProvider.INSTANCE.getDeviceRepos();
+                       // if repository name or url already exist, then return
+                       if (checkRepoExists(list, repo)) {
+                               return;
+                       } else {
+                               repo.setCheckDirty(true);                       
+                               RepositoryProvider.INSTANCE.getDeviceRepos().add(repo);
+                       }
                }
                                
                super.okPressed();
        }
+       
+       private boolean checkRepoExists(CopyOnWriteArrayList<Repository> list, Repository repo) {
+               for( Repository r : list) {
+                       if (r.getName().equals(repo.getName()) || r.getUri().equals(repo.getUri())) {
+                               DialogUtil.openMessageDialog(resources.getString("AddRepo.Message.AlreadyExist"));
+                               return true;
+                       }
+               }               
+               return false;
+       }
 }
index 7b4c95b..3bf957d 100644 (file)
@@ -37,6 +37,7 @@ import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.swt.widgets.TableItem;
 import org.eclipse.ui.console.MessageConsoleStream;
 import org.tizen.common.ui.view.console.ConsoleManager;
+import org.tizen.common.util.DialogUtil;
 import org.tizen.common.util.FileUtil;
 import org.tizen.nativecommon.build.CheckCancelJob;
 import org.tizen.nativecommon.build.CurrentEnabledProject;
@@ -236,7 +237,7 @@ public class BuildSystemTab {
                                                RPMPackageCommander.addRepositoryForRootstrap(repo.getName(), repo.getUri(), targetId, mcs, mcsError);
                                                repo.setCheckDirty(false);
                                        }
-                               }
+                               }                               
                        }
 
                        @Override
@@ -244,6 +245,81 @@ public class BuildSystemTab {
                        }
 
         });
+               
+               Button modify_bt = new Button( parent, SWT.PUSH );
+               modify_bt.setText(resources.getString("PkgMgr.Button.ModifyRepo"));
+               modify_bt.setToolTipText(resources.getString("PkgMgr.Button.ModifyRepo.Tooltip"));
+               modify_bt.addMouseListener(new MouseListener(){
+
+                       @Override
+                       public void mouseDoubleClick(MouseEvent e) {
+                       }
+
+                       @Override
+                       public void mouseDown(MouseEvent e) {
+                               
+                               CopyOnWriteArrayList<Repository> list = RepositoryProvider.INSTANCE.getBuildsystemRepos();
+                               
+                               Repository selectedRepo = null;
+                               int count = 0;
+
+                               for( Repository repo : list) {                                  
+                                       if (repo.getCheckColumn()) {
+                                               count++;
+                                               selectedRepo = repo;
+                                       }
+                               }
+                               
+                               if (count != 1 ) {                                      
+                                       DialogUtil.openMessageDialog(resources.getString("PkgMgr.Message.Select.OnePackage"));
+                                       return;
+                               }                               
+                               
+                               ModifyRepoDialog dialog = new ModifyRepoDialog(shell, resources.getString("PkgMgr.Tab.Buildsystem"),
+                                               selectedRepo.getName(), selectedRepo.getUri());
+                               dialog.open();
+                               
+                               repoViewer.refresh();
+
+                               int recentTableIndex = 0;
+                               recentTableIndex = repoViewer.getTable().getItemCount();
+
+                               for (int i = 0; i < recentTableIndex; i++) {
+                                       TableItem item = null;
+                                       item = repoViewer.getTable().getItem(i);
+                                       Repository repo = (Repository)item.getData();
+                                       item.setChecked(repo.getCheckColumn());
+
+                                       if (repo.getCheckDirty()) {
+                                               list.remove(selectedRepo);
+                                               ConsoleManager cm = new ConsoleManager(resources.getString("PkgMgr.Console.Name"), true);
+                                               cm.clear();
+                                               MessageConsoleStream mcsError = cm.getMessageConsoleStream();
+                                               MessageConsoleStream mcs = cm.getMessageConsoleStream();                                                
+                                               RPMPackageCommander.removeRepositoryForRootstrap(selectedRepo.getName(), targetId, mcs, mcsError);
+                                               
+                                               cm.clear();
+                                               mcsError = cm.getMessageConsoleStream();
+                                               mcs = cm.getMessageConsoleStream();
+                                               RPMPackageCommander.addRepositoryForRootstrap(repo.getName(), repo.getUri(), targetId, mcs, mcsError);
+                                               repo.setCheckDirty(false);
+                                       }
+                               }
+                               
+                               repoViewer.refresh();
+                               recentTableIndex = repoViewer.getTable().getItemCount();
+
+                               for (int i = 0; i < recentTableIndex; i++) {
+                                       TableItem item = repoViewer.getTable().getItem(i);
+                                       Repository repo = (Repository)item.getData();
+                                       item.setChecked(repo.getCheckColumn());
+                               }                               
+                       }
+
+                       @Override
+                       public void mouseUp(MouseEvent e) {
+                       }
+        });
 
                Button remove_bt = new Button( parent, SWT.PUSH );
                remove_bt.setText(resources.getString("PkgMgr.Button.RemoveRepo"));
@@ -333,8 +409,7 @@ public class BuildSystemTab {
                        @Override
                        public void mouseUp(MouseEvent e) {
                        }
-
-        });
+        });            
        }
 
        private void createPackageTable( Composite parent )
index eb4ec64..c0d44cd 100644 (file)
@@ -37,6 +37,7 @@ import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.swt.widgets.TableItem;
 import org.eclipse.ui.console.MessageConsoleStream;
 import org.tizen.common.ui.view.console.ConsoleManager;
+import org.tizen.common.util.DialogUtil;
 import org.tizen.nativecommon.build.SmartBuildInterface;
 import org.tizen.nativecommon.build.exception.SBIException;
 import org.tizen.nativeplatform.pkgmgr.PackageManagerOuputReceiver;
@@ -241,6 +242,77 @@ public class DeviceTab {
                        }
 
         });
+               
+               Button modify_bt = new Button( parent, SWT.PUSH );
+               modify_bt.setText(resources.getString("PkgMgr.Button.ModifyRepo"));
+               modify_bt.setToolTipText(resources.getString("PkgMgr.Button.ModifyRepo.Tooltip"));
+               modify_bt.addMouseListener(new MouseListener(){
+
+                       @Override
+                       public void mouseDoubleClick(MouseEvent e) {
+                       }
+
+                       @Override
+                       public void mouseDown(MouseEvent e) {
+                               
+                               CopyOnWriteArrayList<Repository> list = RepositoryProvider.INSTANCE.getDeviceRepos();
+                               
+                               Repository selectedRepo = null;
+                               int count = 0;
+
+                               for( Repository repo : list) {                                  
+                                       if (repo.getCheckColumn()) {
+                                               count++;
+                                               selectedRepo = repo;
+                                       }
+                               }
+                               
+                               if (count != 1 ) {                                      
+                                       DialogUtil.openMessageDialog(resources.getString("PkgMgr.Message.Select.OnePackage"));
+                                       return;
+                               }                               
+                               
+                               ModifyRepoDialog dialog = new ModifyRepoDialog(shell, resources.getString("PkgMgr.Tab.Device"),
+                                               selectedRepo.getName(), selectedRepo.getUri());
+                               dialog.open();
+                               
+                               repoViewer.refresh();
+
+                               int recentTableIndex = 0;
+                               recentTableIndex = repoViewer.getTable().getItemCount();
+
+                               for (int i = 0; i < recentTableIndex; i++) {
+                                       TableItem item = null;
+                                       item = repoViewer.getTable().getItem(i);
+                                       Repository repo = (Repository)item.getData();
+                                       item.setChecked(repo.getCheckColumn());
+
+                                       if (repo.getCheckDirty()) {
+                                               list.remove(selectedRepo);
+                                               PackageManagerOuputReceiver rec = getNewOuputReceiver();                                                
+                                               RPMPackageCommander.removeRepositoryForDevice(selectedRepo.getName(), device, rec);
+                                               
+                                               rec.cleanLog();                                         
+                                               RPMPackageCommander.addRepositoryForDevice(repo.getName(), repo.getUri(), device, rec);
+                                               repo.setCheckDirty(false);
+                                       }
+                               }
+                               
+                               repoViewer.refresh();
+                               recentTableIndex = repoViewer.getTable().getItemCount();
+
+                               for (int i = 0; i < recentTableIndex; i++) {
+                                       TableItem item = repoViewer.getTable().getItem(i);
+                                       Repository repo = (Repository)item.getData();
+                                       item.setChecked(repo.getCheckColumn());
+                               }                               
+                       }
+
+                       @Override
+                       public void mouseUp(MouseEvent e) {
+                       }
+        });
+
 
                Button remove_bt = new Button( parent, SWT.PUSH );
                remove_bt.setText(resources.getString("PkgMgr.Button.RemoveRepo"));
diff --git a/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/ModifyRepoDialog.java b/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/ModifyRepoDialog.java
new file mode 100644 (file)
index 0000000..27278f5
--- /dev/null
@@ -0,0 +1,103 @@
+package org.tizen.nativeplatform.pkgmgr.ui;
+
+import java.util.ResourceBundle;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+import org.tizen.nativeplatform.pkgmgr.model.Repository;
+import org.tizen.nativeplatform.pkgmgr.model.RepositoryProvider;
+
+public class ModifyRepoDialog extends Dialog {
+       
+       private Text nameText;
+       private Text uriText;
+       private String tab;
+       private String name;
+       private String value;
+       
+       private int x = 0;
+       private int y = 0;
+       private final int width = 500;
+       private final int height = 200;
+       
+       private final String BUNDLE_NAME = ModifyRepoDialog.class.getPackage().getName() + ".PkgMgrUIMessages";//$NON-NLS-1$
+       private ResourceBundle resources = ResourceBundle.getBundle(BUNDLE_NAME);
+
+       protected ModifyRepoDialog(Shell parentShell) {
+               super(parentShell);     
+       }
+       
+       public ModifyRepoDialog(Shell parentShell, String tab, String name, String value) {
+               super(parentShell);
+               this.tab = tab;
+               this.name = name;
+               this.value = value;
+               Rectangle bounds = parentShell.getBounds();
+        x = bounds.x + (bounds.width - width)/2;
+        y = bounds.y + (bounds.height - height)/2;
+       }
+       
+       @Override
+       protected void configureShell(Shell newShell) {
+               super.configureShell(newShell);         
+               
+               newShell.setText(resources.getString("ModifyRepo.Title"));              
+               newShell.setLocation(x, y);
+               newShell.setSize(width, height);
+       }
+       
+       @Override
+       protected Control createDialogArea(Composite parent) {          
+               
+               Composite composite = new Composite( parent, SWT.NONE);
+               composite.setLayoutData(new GridData(GridData.FILL_BOTH));
+               composite.setLayout(new GridLayout(2, false));
+               
+               Label nameLabel = new Label(composite, SWT.NONE);
+               nameLabel.setText(resources.getString("ModifyRepo.Label.Name"));                
+               nameText = new Text(composite, SWT.SINGLE | SWT.BORDER | SWT.SEARCH);
+        GridData gridData = new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL);
+        gridData.widthHint = 500;
+        nameText.setLayoutData(gridData);
+        nameText.setText(name);
+        nameText.setEnabled(false);
+        
+        Label urlLabel = new Label(composite, SWT.NONE);
+        urlLabel.setText(resources.getString("ModifyRepo.Label.Uri"));         
+               uriText = new Text(composite, SWT.SINGLE | SWT.BORDER | SWT.SEARCH);
+        gridData = new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL);
+        gridData.widthHint = 500;
+        uriText.setLayoutData(gridData);
+        uriText.setText(value);
+                               
+               return null;
+       }       
+       
+       @Override
+       protected void okPressed() {
+               
+               Repository repo = new Repository();
+               if (!uriText.getText().equals(value)) {
+                       repo.setName(nameText.getText());
+                       repo.setUri(uriText.getText());
+                       repo.setCheckDirty(true);
+                       
+                       if (resources.getString("PkgMgr.Tab.Buildsystem").equals(tab)) {
+                               RepositoryProvider.INSTANCE.getBuildsystemRepos().add(repo);
+                       } else if (resources.getString("PkgMgr.Tab.Device").equals(tab)) {
+                               RepositoryProvider.INSTANCE.getDeviceRepos().add(repo);
+                       }
+               }
+                               
+               super.okPressed();
+       }
+}
index 20e5f7b..9f2b686 100644 (file)
@@ -13,6 +13,8 @@ PkgMgr.Label.Configuration = Selected configuration:
 PkgMgr.Label.Connection = Selected connection:
 PkgMgr.Button.AddRepo = Add
 PkgMgr.Button.AddRepo.Tooltip = Add a repository
+PkgMgr.Button.ModifyRepo = Modify
+PkgMgr.Button.ModifyRepo.Tooltip = Modify a repository
 PkgMgr.Button.RemoveRepo = Remove
 PkgMgr.Button.RemoveRepo.Tooltip = Remove the selected repositories
 PkgMgr.Button.RefreshRepo = Refresh
@@ -29,13 +31,19 @@ PkgMgr.Message.Refreshing = Refreshing the repository...
 PkgMgr.Message.Adding.Package = Adding packages to the list...
 PkgMgr.Message.Getting.RemotePackage = Getting the remote package list...
 PkgMgr.Message.Installing.Package = Installing packages...
+PkgMgr.Message.Select.OnePackage = Please select one repository
 PkgMgr.Message.Transfer.File = Transferring %s to target's %s...
 PkgMgr.Console.Remote.Install = ***** Installing a remote package *****\n
 PkgMgr.Console.Local.Install = \n***** Installing a local package *****\n
 
 AddRepo.Title = Add Package Repository
 AddRepo.Label.Name = Name:
-AddRepo.Label.Uri = URI: 
+AddRepo.Label.Uri = URI:
+AddRepo.Message.AlreadyExist = The repository already exists
+
+ModifyRepo.Title = Modify Package Repository
+ModifyRepo.Label.Name = Name:
+ModifyRepo.Label.Uri = URI:
 
 AddRemotePkg.Title = Add Remote Packages