[INST_UI] InstallManager has new UX. 08/13208/1
authoryongsung1.kim <yongsung1.kim@samsung.com>
Fri, 29 Nov 2013 06:39:58 +0000 (15:39 +0900)
committeryongsung1.kim <yongsung1.kim@samsung.com>
Fri, 29 Nov 2013 06:39:58 +0000 (15:39 +0900)
InstallManager has new UX but it is not yet complete. We are developing
it. We need to save modified codes to repository.

Change-Id: Ia7707342db15d4bdeb4308ce4d1c6afd8a19014d
Signed-off-by: yongsung1.kim <yongsung1.kim@samsung.com>
19 files changed:
InstallManager_java/src/org/tizen/installmanager/core/InstallManager.java
InstallManager_java/src/org/tizen/installmanager/core/Installer.java
InstallManager_java/src/org/tizen/installmanager/lib/Downloader.java
InstallManager_java/src/org/tizen/installmanager/lib/IIMProgressMonitor.java
InstallManager_java/src/org/tizen/installmanager/lib/IMError.java
InstallManager_java/src/org/tizen/installmanager/ui/InstallManagerWindow.java
InstallManager_java/src/org/tizen/installmanager/ui/lib/IMButton.java
InstallManager_java/src/org/tizen/installmanager/ui/model/ItemTreeContentProvider.java
InstallManager_java/src/org/tizen/installmanager/ui/page/CompletePage.java
InstallManager_java/src/org/tizen/installmanager/ui/page/InstallPage.java
InstallManager_java/src/org/tizen/installmanager/ui/page/InstallableListPage.java
InstallManager_java/src/org/tizen/installmanager/ui/page/InstallingPage.java
InstallManager_java/src/org/tizen/installmanager/ui/page/PackageListPage.java
InstallManager_java/src/org/tizen/installmanager/ui/page/PageTemplate.java
InstallManager_java/src/org/tizen/installmanager/ui/page/SetInstallDirectoryPage.java
InstallManager_java/src/org/tizen/installmanager/ui/page/UninstallableListPage.java
InstallManager_java/src/org/tizen/installmanager/ui/page/UninstallingPage.java
InstallManager_java/src/org/tizen/installmanager/ui/page/UpdatableListPage.java
InstallManager_java/src/org/tizen/installmanager/ui/page/WelcomePage.java

index 76fdc8f..47bd366 100644 (file)
@@ -562,7 +562,7 @@ public class InstallManager {
                                        + targetDir);\r
                        return false;\r
                }\r
-\r
+               \r
                mConfig.setTargetDir(targetDir);\r
                mConfig.setSdkDatatDir(Registry.sdkDataPath);\r
 \r
@@ -610,6 +610,7 @@ public class InstallManager {
                // download complete.\r
                if (monitor != null) {\r
                        monitor.workedDownloadProgress("Download complete", 0);\r
+                       monitor.downloadDone();\r
                }\r
 \r
                // install thread is running yet.\r
@@ -623,6 +624,7 @@ public class InstallManager {
                // install complete\r
                if (monitor != null) {\r
                        monitor.workedInstallProgress("Installation complete", 0);\r
+                       monitor.installDone();\r
                }\r
 \r
                // save config file\r
@@ -714,6 +716,7 @@ public class InstallManager {
                                                        if (installBuffer.size() <= 0) {\r
                                                                if (monitor != null ) {\r
                                                                        monitor.workedInstallProgress("Waiting for download", 0);\r
+                                                                       monitor.installEnd();\r
                                                                }\r
                                                        }\r
                                                }\r
@@ -887,7 +890,7 @@ public class InstallManager {
                return bResult;\r
        }\r
 \r
-       private String getDownloadTargetPath(Package pkg) {\r
+       public String getDownloadTargetPath(Package pkg) {\r
                String repository = pkg.getBaseURL().toString();\r
 \r
                String encodeRepository = null;\r
@@ -1263,10 +1266,14 @@ public class InstallManager {
         */\r
        public boolean removePackage(Package pkg, IIMProgressMonitor monitor) {\r
                Log.log("InstallManager package remove start  => " + pkg);\r
-\r
+               \r
                if (pkg == null) {\r
                        return false;\r
                }\r
+               \r
+               if (monitor != null) {\r
+                       monitor.workedTitle(pkg.getPackageName());\r
+               }\r
 \r
                if (Options.doRemoveNoUI || Options.doInstallNoUI) {\r
                        System.out.println(pkg.getPackageName() + " is uninstalling...");\r
@@ -1364,10 +1371,6 @@ public class InstallManager {
        private void removeAllPackages(IIMProgressMonitor monitor) {\r
                Log.log("Remove all packages.");\r
 \r
-               if (monitor != null) {\r
-                       monitor.workedTitle(REMOVE_ALL_PACKAGES);\r
-               }\r
-\r
                PackageSet removablePackages = packageManager.getInstalledPackages();\r
 \r
                for (Package pkg : removablePackages) {\r
index 58050c5..45650f7 100644 (file)
@@ -302,8 +302,8 @@ public class Installer {
 \r
        private long unZipPackage(Package pkg, String tempDir,\r
                        IIMProgressMonitor monitor) {\r
-               String filePath = PathUtil.get(Config.getInstance().getDownloadPkgPath(), pkg.getFileName());\r
-\r
+               String filePath = InstallManager.getInstance().getDownloadTargetPath(pkg);\r
+               \r
                File pkgFile = new File(filePath);\r
                if (!pkgFile.exists()) {\r
                        Log.err(filePath + " doesn't exist");\r
index ebb3685..1db5227 100644 (file)
@@ -247,6 +247,10 @@ public class Downloader {
                                        throw new IMNetworkDownloadException(ErrorCode.INTERNET_CONNECTION_ERROR);\r
                                }\r
                        }\r
+                       \r
+                       if (writeSizePerSecond > 0 && monitor != null) {\r
+                               monitor.workedDownloadSize(writeSizePerSecond);\r
+                       }\r
                } catch (SocketTimeoutException e) {\r
                        Log.ExceptionLog(e);\r
                        ErrorController.setError(ErrorCode.SERVER_CONNECTION_TIME_OUT);\r
index da4148c..aaba8e0 100644 (file)
@@ -51,6 +51,8 @@ public interface IIMProgressMonitor extends IProgressMonitor{
         */\r
        public void workedDownloadProgress(String fileName, int progressNumber);\r
        public void workedDownloadSize(long size);\r
+       public void revertDownloadSize(long size);\r
+       public void downloadDone();\r
        \r
        /**\r
         * Display install progress.\r
@@ -58,12 +60,12 @@ public interface IIMProgressMonitor extends IProgressMonitor{
         * @param progressNumber\r
         */\r
        public void workedInstallProgress(String fileName, int progressNumber);\r
-       void workedInstallSize(long size);\r
+       public void workedInstallSize(long size);\r
+       public void installDone();\r
        \r
        /**\r
         * Refresh worked size.\r
         */\r
        public void workedRefresh();\r
-\r
     public void setError(int errorCode);\r
 }\r
index 5086f62..689d92e 100644 (file)
@@ -71,7 +71,7 @@ public class IMError {
                                window.setCancelBtnEnabled(true);
                                window.showComposite(completePage);
                                completePage.setTitle("Installation Error");
-                               completePage.setCustomErrorMessage(message);
+                               completePage.setCustomErrorMessage(message, SWT.CENTER);
                        }
                });
 
index 923b5d8..3d75bfb 100644 (file)
@@ -117,18 +117,15 @@ public class InstallManagerWindow extends ApplicationWindow {
 
 //     private StackLayout sl_composite = new StackLayout();
        public StackLayout sl_composite = new StackLayout();
-       private static Button btnTest;
        private static Button btnClose;
        private static Button btnBack;
        private static Button btnNext;
 
-       private AddExtraRepositoryDialog extraDialog = null;
-       
        private Composite pageComposite; // Page area
        private WelcomePage compositeWelcomePage;
        private LicensePage compositeLicensePage;
        private InstallableListPage compositeInstallableListPage;
-       private UninstallableListPage compositeUninstallablePage;
+       private UninstallableListPage compositeUninstallableListPage;
        private InstallingPage compositeInstallingPage;
        private UninstallingPage compositeUninstallingPage;
        private CompletePage compositeCompletePage;
@@ -270,12 +267,12 @@ public class InstallManagerWindow extends ApplicationWindow {
                compositeInstallingPage = new InstallingPage(pageComposite, SWT.NONE);
                compositeInstallableListPage = new InstallableListPage(pageComposite, SWT.NONE);
                compositeUninstallingPage = new UninstallingPage(pageComposite, SWT.NONE);
-               compositeUninstallablePage = new UninstallableListPage(pageComposite, SWT.NONE);
+               compositeUninstallableListPage = new UninstallableListPage(pageComposite, SWT.NONE);
                compositeSetInstallDirectoryPage = new SetInstallDirectoryPage(pageComposite, SWT.NONE);
                compositeUpdatableListPage = new UpdatableListPage(pageComposite, SWT.NONE);
 
 //             registLicensePageListener();
-               registCompletePageListener();
+//             registCompletePageListener();
 
                initWelcomePage();
                
@@ -356,8 +353,10 @@ public class InstallManagerWindow extends ApplicationWindow {
                                                }
                                                
                                                if (!controller.isNewInstallation()) {// Update case
+                                                       Config.status = Config.Status.UPDATE;
                                                        compositeUpdatableListPage.loadPage(controller);
                                                        btnBack.setVisible(true);
+                                                       btnNext.setVisible(true);
                                                        showComposite(compositeUpdatableListPage);
                                                        if (controller.existRemovablePackage()) {
                                                                btnNext.setText("Install");
@@ -366,6 +365,7 @@ public class InstallManagerWindow extends ApplicationWindow {
                                                } else {
                                                        boolean hasItem = compositeInstallableListPage.loadPage(controller);
                                                        if (hasItem) {
+                                                               Config.status = Config.Status.INSTALL;
                                                                showComposite(compositeInstallableListPage);
                                                                btnNext.setVisible(true);
                                                                btnNext.setEnabled(hasItem);
@@ -391,36 +391,41 @@ public class InstallManagerWindow extends ApplicationWindow {
                                                }
                                                btnBack.setVisible(true);
                                        } else if (compositeWelcomePage.getSelectedButton() == INSTALLMANAGER_ACTION.UNINSTALL) {
-                                               int resultDialog = MessageBoxDlg.NO;
-                                               resultDialog = MessageBoxDlg.showDlg(
-                                                               e.display.getActiveShell(),
-                                                               "Tizen SDK Install Manager",
-                                                               "Are you sure you want to remove the Tizen SDK?\n\nIf you click \"Yes\", the Tizen SDK is uninstalled.",
-                                                               DialogType.WARNING, false);
-                                               if (resultDialog == MessageBoxDlg.YES) {
-                                                       showComposite(compositeUninstallingPage);
-                                                       btnBack.setVisible(false);
-                                                       btnNext.setVisible(false);
-                                                       btnClose.setEnabled(false);
-                                                       
-                                                       if (Config.isSupportMultiSDK()) {
-                                                               PackageManager.dispose();
-                                                               initInstallManager();                                                           
-                                                       }
-
-                                                       List<Item> items = compositeUninstallablePage.getItems();
-                                                       boolean result = compositeUninstallingPage.loadPage(getSelectedPackageNames(items) /* compositeInstallablePage.getCheckedPackageNames()*/,
-                                                                                                                                                               controller,
-                                                                                                                                                               window);
-                                                       if (!result) {
-                                                               showComposite(compositeWelcomePage);
-                                                               btnBack.setVisible(true);
-                                                               btnNext.setVisible(true);
-                                                               btnClose.setEnabled(true);
-                                                       }
-                                               } else {
-                                                       return;
-                                               }
+                                               showComposite(compositeUninstallableListPage);
+                                               btnNext.setVisible(true);
+                                               btnBack.setVisible(true);
+                                               btnNext.setText("Uninstall");
+                                               compositeUninstallableListPage.loadPage(controller);
+//                                             int resultDialog = MessageBoxDlg.NO;
+//                                             resultDialog = MessageBoxDlg.showDlg(
+//                                                             e.display.getActiveShell(),
+//                                                             "Tizen SDK Install Manager",
+//                                                             "Are you sure you want to remove the Tizen SDK?\n\nIf you click \"Yes\", the Tizen SDK is uninstalled.",
+//                                                             DialogType.WARNING, false);
+//                                             if (resultDialog == MessageBoxDlg.YES) {
+//                                                     showComposite(compositeUninstallingPage);
+//                                                     btnBack.setVisible(false);
+//                                                     btnNext.setVisible(false);
+//                                                     btnClose.setEnabled(false);
+//                                                     
+//                                                     if (Config.isSupportMultiSDK()) {
+//                                                             PackageManager.dispose();
+//                                                             initInstallManager();                                                           
+//                                                     }
+//
+//                                                     List<Item> items = compositeUninstallablePage.getItems();
+//                                                     boolean result = compositeUninstallingPage.loadPage(getSelectedPackageNames(items) /* compositeInstallablePage.getCheckedPackageNames()*/,
+//                                                                                                                                                             controller,
+//                                                                                                                                                             window);
+//                                                     if (!result) {
+//                                                             showComposite(compositeWelcomePage);
+//                                                             btnBack.setVisible(true);
+//                                                             btnNext.setVisible(true);
+//                                                             btnClose.setEnabled(true);
+//                                                     }
+//                                             } else {
+//                                                     return;
+//                                             }
                                        }
                                } else if (sl_composite.topControl == compositeInstallableListPage) {
 //                                     btnNext.setEnabled(compositeLicensePage.getAcceptButton().getSelection());
@@ -541,17 +546,17 @@ public class InstallManagerWindow extends ApplicationWindow {
                                                btnNext.setVisible(true);
                                                btnClose.setEnabled(true);
                                        }
-                               } else if (sl_composite.topControl == compositeUninstallablePage) {
+                               } else if (sl_composite.topControl == compositeUninstallableListPage) {
                                        showComposite(compositeUninstallingPage);
                                        btnBack.setVisible(false);
                                        btnNext.setVisible(false);
                                        btnClose.setEnabled(false);
-                                       List<Item> items = compositeUninstallablePage.getItems();
+                                       List<Item> items = compositeUninstallableListPage.getItems();
                                        boolean result = compositeUninstallingPage.loadPage(getSelectedPackageNames(items) /* compositeInstallablePage.getCheckedPackageNames()*/,
                                                                                                                                                controller,
                                                                                                                                                window);
                                        if (!result) {
-                                               showComposite(compositeUninstallablePage);
+                                               showComposite(compositeUninstallableListPage);
                                                btnBack.setVisible(true);
                                                btnNext.setVisible(true);
                                                btnClose.setEnabled(true);
@@ -567,26 +572,36 @@ public class InstallManagerWindow extends ApplicationWindow {
                btnBack.addSelectionListener(new SelectionAdapter() {
                        @Override
                        public void widgetSelected(SelectionEvent e) {
-                               if (sl_composite.topControl == compositeLicensePage) {
+                               if (sl_composite.topControl == compositeInstallableListPage
+                                               || sl_composite.topControl == compositeUpdatableListPage) {
+                                       compositeInstallableListPage.getItems().clear();
+                                       showComposite(compositeWelcomePage);
+//                                     if (controller.existRemovablePackage()) {
+//                                             btnBack.setVisible(false);
+//                                             showComposite(compositeWelcomePage);
+//                                     } else {
+//                                             showComposite(compositeLicensePage);
+//                                     }
+                                       btnNext.setEnabled(true);
+                                       btnNext.setText("Next");
+                               } else if (sl_composite.topControl == compositeLicensePage) {
                                        btnNext.setEnabled(true);
                                        btnBack.setVisible(false);
                                        btnNext.setFocus();
-                                       showComposite(compositeWelcomePage);
-                               } else if (sl_composite.topControl == compositeInstallableListPage || sl_composite.topControl == compositeUpdatableListPage) {
-                                       compositeInstallableListPage.getItems().clear();
-                                       if (controller.existRemovablePackage()) {
-                                               btnBack.setVisible(false);
-                                               showComposite(compositeWelcomePage);
-                                       } else {
-                                               showComposite(compositeLicensePage);
+                                       if (compositeWelcomePage.getSelectedButton() == INSTALLMANAGER_ACTION.INSTALL) {
+                                               showComposite(compositeInstallableListPage);
+                                               btnNext.setText("Next");
+                                               btnBack.setVisible(true);
+                                       } else if (compositeWelcomePage.getSelectedButton() == INSTALLMANAGER_ACTION.UPDATE) {
+                                               showComposite(compositeUpdatableListPage);
+                                               btnNext.setText("Next");
+                                               btnBack.setVisible(true);
                                        }
-                                       btnNext.setEnabled(true);
-                                       btnNext.setText("Next");
                                } else if (sl_composite.topControl == compositeSetInstallDirectoryPage) {
-                                       showComposite(compositeInstallableListPage);
-                                       btnNext.setText("Next");
+                                       showComposite(compositeLicensePage);
+                                       btnNext.setText("I agree");
                                        btnNext.setEnabled(true);
-                               } else if (sl_composite.topControl == compositeUninstallablePage) {
+                               } else if (sl_composite.topControl == compositeUninstallableListPage) {
                                        showComposite(compositeWelcomePage);
                                        btnNext.setText("Next");
                                        btnNext.setEnabled(true);
@@ -616,7 +631,7 @@ public class InstallManagerWindow extends ApplicationWindow {
                        btnClose.removeSelectionListener(cancelBtnSelectionAdapter);
                        btnClose.addSelectionListener(cancelBtnSelectionAdapter);
                        
-//                     compositeWelcomePage.setButtonStatus();
+                       compositeWelcomePage.setButtonStatus();
                } else {
                        compositeWelcomePage.setVisibleRadioButton(false);
                        btnNext.setVisible(false);
@@ -640,6 +655,7 @@ public class InstallManagerWindow extends ApplicationWindow {
                }
                btnNext.setFocus();
                sl_composite.topControl = compositeWelcomePage;
+//             sl_composite.topControl = compositeUninstallingPage;
        }
        
        /**
index a8b92ee..5cf178c 100644 (file)
@@ -17,6 +17,7 @@ public class IMButton extends Canvas{
        Image sourceImage = null;
        Image hoverImage = null;
        boolean selected_flag = false;
+       boolean enabled_flag = false;
        
        public IMButton(Composite parent, int style) {
                super(parent, style);
@@ -28,7 +29,7 @@ public class IMButton extends Canvas{
        }
        
        public void setBounds(int x, int y, int width, int height) {
-               setBounds(x, y, width, height);
+               super.setBounds(x, y, width, height);
        }
        
        public void setImage(String sourceImagePath){
@@ -61,6 +62,14 @@ public class IMButton extends Canvas{
                return selected_flag;
        }
        
+       public void setEnabledFlag(boolean enabled) {
+               this.enabled_flag = enabled;
+       }
+       
+       public boolean getEnabledFlag() {
+               return enabled_flag;
+       }
+       
        private void init(){
        this.addPaintListener(new PaintListener() {
             public void paintControl(PaintEvent e) {
index 154cbd6..d38dd4c 100644 (file)
@@ -33,6 +33,8 @@ import java.util.List;
 
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.Viewer;
+import org.tizen.installmanager.core.Config;
+import org.tizen.installmanager.ui.model.Item.InstallState;
 
 /**
  * an interface to content providers for tree-structure-oriented viewers.
@@ -73,7 +75,17 @@ public class ItemTreeContentProvider implements ITreeContentProvider {
        @Override
        public Object[] getChildren(Object parentElement) {
                if (parentElement instanceof Item) {
-                       return ((Item) parentElement).getChildren().toArray();
+                       ArrayList<Item> children = new ArrayList<Item>();
+                       if (Config.status == Config.Status.UNINSTALL) {
+                               for (Item it : ((Item) parentElement).getChildren()) {
+                                       if (it.getInstallState() == InstallState.UNINSTALL) {
+                                               children.add(it);
+                                       }
+                               }
+                       } else {
+                               children = ((Item) parentElement).getChildren();
+                       }
+                       return children.toArray();
                } else {
                        return null;
                }
index 4eed321..3542e47 100644 (file)
@@ -33,8 +33,10 @@ import java.io.File;
 
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.graphics.RGB;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
@@ -44,19 +46,21 @@ import org.tizen.installmanager.lib.Platform;
 import org.tizen.installmanager.ui.InstallManagerWindow;
 import org.tizen.installmanager.ui.dialog.MessageBoxDlg;
 import org.tizen.installmanager.ui.dialog.MessageBoxDlg.DialogType;
+import org.tizen.installmanager.ui.page.InstallPage.CIRCULAR_TYPE;
 import org.tizen.installmanager.util.PathUtil;
 
 /**
  * Complete Page class
  * @author Taeyoung Son <taeyoung2.son@samsung.com>
  */
-public class CompletePage extends PageTemplate {
-       public static final String RSC_PATH_INSTALL_IMAGE = RESOURCE_PATH + "/install_manager_graphicmotif_004.png";
-       public static final String RSC_PATH_UNINSTALL_IMAGE = RESOURCE_PATH + "/uninstaller_graphicmotif_003.png";
-       public static final String STRING_TITLE = "Installation Completed";
-       private Label lblNewLabel;
-       private Label lblInfo;
-       public Button checkBtn;
+public class CompletePage extends InstallPage {
+//     public static final String RSC_PATH_INSTALL_IMAGE = RESOURCE_PATH + "/install_manager_graphicmotif_004.png";
+//     public static final String RSC_PATH_UNINSTALL_IMAGE = RESOURCE_PATH + "/uninstaller_graphicmotif_003.png";
+       public static final String RSC_PATH_IMAGE_NEW = RESOURCE_PATH_NEW + "/08_complete_installation_bg.png";
+       public static final String STRING_TITLE = "Completed installation.";
+       private Label completeMessageLabel;
+       private Label informationLabel;
+       public Button releaseNoteButton;
        private StyledText errorText;
 
 
@@ -67,10 +71,17 @@ public class CompletePage extends PageTemplate {
         */
        public CompletePage(Composite parent, int style) {
                super(parent, style, true);
-               setLeftImageFromResource(RSC_PATH_INSTALL_IMAGE);
-               setTitle(STRING_TITLE);
+               setLeftImageFromResource(RSC_PATH_IMAGE_NEW);
+               
+               disableTitleBounds();
+               disableSubtitleBounds();
+               
+               setTitleLabelText(STRING_TITLE);
+               setProgressCircle(customComposite, CIRCULAR_TYPE.CUSTOM);
+               setCircularCenterImage(PathUtil.getImageFromResource(RSC_PROGRESS_IMAGE_START));
+               getCircularGraph().setGraphBgColor(PROGRESS_CIRCLE_COLOR);
 
-               setCustomLabel();
+               setCompleteMessageLabel();
                setInfoLabel();
                setErrorText();
                setCheckButton();
@@ -79,45 +90,58 @@ public class CompletePage extends PageTemplate {
        public void loadPage() {
        }
        
-       private void setCheckButton() {
-               checkBtn = new Button(customComposite, SWT.CHECK);
-               checkBtn.setBackground(InstallManagerWindow.getBackgroundColor());
-               checkBtn.setText("Show Release Note.");
-               checkBtn.setLocation(10, 150);
-               checkBtn.pack();
-               // If JDK does not support to DeskTop class, InstallManager cannot show release note.
-               checkBtn.setSelection(Desktop.isDesktopSupported());
-               checkBtn.setEnabled(Desktop.isDesktopSupported());
-       }
-       
-       private void setCustomLabel() {
-               lblNewLabel = new Label(customComposite, SWT.WRAP);
-               lblNewLabel.setBounds(10, 0, 400, 70);
-               lblNewLabel.setText("");
-               lblNewLabel.setBackground(InstallManagerWindow.getBackgroundColor());
+       private void setCompleteMessageLabel() {
+               completeMessageLabel = new Label(customComposite, SWT.WRAP);
+               completeMessageLabel.setBounds(100, 133, 450, 45);
+//             completeMessageLabel.setAlignment(SWT.LEFT);
+               completeMessageLabel.setText("");
+//             completeMessageLabel.setBackground(InstallManagerWindow.getBackgroundColor());
+               completeMessageLabel.setBackground(new Color(null, new RGB(191, 139, 41)));
        }
        
        private void setInfoLabel() {
-               lblInfo = new Label(customComposite, SWT.WRAP);
-               lblInfo.setBounds(10, 70, 400, 70);
-               lblInfo.setText("");
-               lblInfo.setBackground(InstallManagerWindow.getBackgroundColor());
+               informationLabel = new Label(customComposite, SWT.WRAP);
+               informationLabel.setBounds(100, 183, 450, 50);
+//             informationLabel.setAlignment(SWT.LEFT);
+               informationLabel.setText("");
+               informationLabel.setBackground(InstallManagerWindow.getBackgroundColor());
                
                if (Platform.isUbuntu()) {
-                       lblInfo.setFont((new Font(Display.getCurrent(), new FontData("Dejavu Sans", 9, SWT.BOLD))));
+                       informationLabel.setFont((new Font(Display.getCurrent(), new FontData("Dejavu Sans", 9, SWT.BOLD))));
                } else if (Platform.isWindows()) {
-                       lblInfo.setFont((new Font(Display.getCurrent(), new FontData("Verdana", 9, SWT.BOLD))));                        
+                       informationLabel.setFont((new Font(Display.getCurrent(), new FontData("Verdana", 9, SWT.BOLD))));                       
                } else {
-                       lblInfo.setFont((new Font(Display.getCurrent(), new FontData("Lucida Grande", 12, SWT.BOLD))));
+                       informationLabel.setFont((new Font(Display.getCurrent(), new FontData("Lucida Grande", 12, SWT.BOLD))));
                }
        }
        
+       private void setCheckButton() {
+               releaseNoteButton = new Button(customComposite, SWT.CHECK);
+               releaseNoteButton.setBackground(InstallManagerWindow.getBackgroundColor());
+               releaseNoteButton.setText("Show Release Note.");
+               releaseNoteButton.setBounds(243, 245, 122, 26);
+               releaseNoteButton.pack();
+               // If JDK does not support to DeskTop class, InstallManager cannot show release note.
+//             releaseNoteButton.setVisible(Desktop.isDesktopSupported());
+//             releaseNoteButton.setSelection(Desktop.isDesktopSupported());
+       }
+       
        private void setErrorText() {
                errorText = new StyledText(customComposite, SWT.WRAP);
-               errorText.setBounds(10, 173, 400, 100);
+               errorText.setBounds(10, 235, 608, 100);
+               errorText.setAlignment(SWT.CENTER);
                errorText.setText("");
-               errorText.setBackground(InstallManagerWindow.getBackgroundColor());
-               errorText.setVisible(!Desktop.isDesktopSupported());
+//             errorText.setBackground(InstallManagerWindow.getBackgroundColor());
+               errorText.setBackground(new Color(null, new RGB(191, 139, 41)));
+               errorText.setVisible(Desktop.isDesktopSupported());
+       }
+       
+       public void setErrorTextMsg() {
+               errorText.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_RED));
+               errorText.setText("Your system does not support to show the release note.\n" +
+                               " Please refer to the following URL.\n");
+               String tmp = Config.getInstance().getReleaseNoteUrl();
+               errorText.append(Config.getInstance().getReleaseNoteUrl());
        }
 
        /**
@@ -125,7 +149,7 @@ public class CompletePage extends PageTemplate {
         * @return check button object
         */
        public Button getChkBtn() {
-               return checkBtn;
+               return releaseNoteButton;
        }
 
        /**
@@ -133,23 +157,29 @@ public class CompletePage extends PageTemplate {
         * @param bStatus
         */
        public void showCheckButton(boolean bStatus) {
-               checkBtn.setSelection(false);
-               checkBtn.setVisible(bStatus);
+               releaseNoteButton.setSelection(false);
+               releaseNoteButton.setVisible(bStatus);
        }
 
        /**
         * Show message on complete page.
         * @param completeMsg
         */
-       public void setCustomMessage(String completeMsg) {
-               lblNewLabel.setText(completeMsg);
+//     public void setCustomMessage(String completeMsg) {
+//             completeMessageLabel.setText(completeMsg);
+//     }
+       
+       public void setCustomMessage(String completeMsg, int style) {
+               completeMessageLabel.setText(completeMsg);
+               completeMessageLabel.setAlignment(style);
        }
        
-       public void setInfoMessage(String infoMsg) {
-               String msg = lblInfo.getText();
+       public void setInfoMessage(String infoMsg, int style) {
+               String msg = informationLabel.getText();
                msg = msg + "Information : \n" + infoMsg;
                
-               lblInfo.setText(msg);
+               informationLabel.setText(msg);
+               informationLabel.setAlignment(style);
        }
        
        public void removeTargetDir() {
@@ -184,15 +214,10 @@ public class CompletePage extends PageTemplate {
         * Show error message on complete page.
         * @param errorMsg
         */
-       public void setCustomErrorMessage(String errorMsg) {
-               lblNewLabel.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_RED));
-               lblNewLabel.setText(errorMsg);
-       }
-       
-       public void setErrorTextMsg() {
-               errorText.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_RED));
-               errorText.setText("Your system does not support to show the release note.\n" +
-                               " Please refer to the following URL.\n");
-               errorText.append(Config.getInstance().getReleaseNoteUrl());
+       public void setCustomErrorMessage(String errorMsg, int style) {
+               completeMessageLabel.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_RED));
+               completeMessageLabel.setText(errorMsg);
+               completeMessageLabel.setAlignment(style);
        }
+
 }
index 9166f93..13fee8f 100644 (file)
@@ -20,11 +20,11 @@ public class InstallPage extends PageTemplate {
        static final String RSC_PROGRESS_IMAGE_START = RESOURCE_PATH_NEW + "/progress_start.png";
        static final String RSC_PROGRESS_IMAGE_CENTER = RESOURCE_PATH_NEW + "/progress_center.png";
        static final String RSC_PROGRESS_IMAGE_BACKGROUND = RESOURCE_PATH_NEW + "/progress_center_bg.png";
-       static final Color PROGRESS_CIRCLE_BACKGROUND = new Color(null, new RGB(189, 189, 189)); // light gray
+       static final Color PROGRESS_CIRCLE_BACKGROUND_COLOR = new Color(null, new RGB(189, 189, 189)); // light gray
        static final Color PROGRESS_CIRCLE_COLOR = new Color(null, new RGB(131, 196, 218)); // light blue
-       static final Color PROGRESS_CIRCLE_CENTER = new Color(null, new RGB(255, 255, 255)); // white
+       static final Color PROGRESS_CIRCLE_CENTER_COLOR = new Color(null, new RGB(255, 255, 255)); // white
        protected Label titleLabel;
-       private IMCircularGraph progressGrapgh;
+       private IMCircularGraph progressGraph;
 //     private int circularType = 0; // 0 is percentage, 1 is custom.
        
        protected enum CIRCULAR_TYPE { PERCENTAGE, CUSTOM };
@@ -55,17 +55,22 @@ public class InstallPage extends PageTemplate {
 //             progressGrapgh.setLayout(new FillLayout());
                
                if (circularType == CIRCULAR_TYPE.PERCENTAGE) {
-                       progressGrapgh = new IMCircularGraph(composite, SWT.NONE, IMCircularGraph.TYPE_PERCENT);
+                       progressGraph = new IMCircularGraph(composite, SWT.NONE, IMCircularGraph.TYPE_PERCENT);
                } else if (circularType == CIRCULAR_TYPE.CUSTOM) {
-                       progressGrapgh = new IMCircularGraph(composite, SWT.NONE, IMCircularGraph.TYPE_CUSTOM); 
-                       progressGrapgh.setCanvasColor(new Color(null, new RGB(34, 116, 28)));
-                       progressGrapgh.setGraphBgColor(PROGRESS_CIRCLE_BACKGROUND);
-                       progressGrapgh.setBounds(275, 42, 78, 78);
-                       progressGrapgh.setCenterColor(PROGRESS_CIRCLE_CENTER);
+                       progressGraph = new IMCircularGraph(composite, SWT.NONE, IMCircularGraph.TYPE_CUSTOM);  
                } else {
                        Log.err("Unsupported circular style.");
                        throw new IMFatalException("Unsupported circular style.");
                }
+               
+//             progressGraph.setCanvasColor(new Color(null, new RGB(34, 116, 28)));
+               progressGraph.setCanvasColor(InstallManagerWindow.getBackgroundColor());
+               progressGraph.setGraphBgColor(PROGRESS_CIRCLE_BACKGROUND_COLOR);
+               progressGraph.setBounds(275, 42, 78, 78);
+               progressGraph.setCenterColor(PROGRESS_CIRCLE_CENTER_COLOR);
+               progressGraph.setGraphColor(PROGRESS_CIRCLE_COLOR);
+               
+               
 //             progressGrapgh.setCenterImage(PathUtil.getImageFromResource(RSC_PROGRESS_IMAGE_START));
 //             progressGrapgh.setBackground(InstallManagerWindow.getBackgroundColor());
                
@@ -92,6 +97,10 @@ public class InstallPage extends PageTemplate {
        }
        
        protected void setCircularCenterImage(Image image) {
-               progressGrapgh.setCenterImage(image);
+               progressGraph.setCenterImage(image);
+       }
+       
+       protected IMCircularGraph getCircularGraph() {
+               return progressGraph;
        }
 }
index 18690ec..3c5be0a 100644 (file)
@@ -93,7 +93,7 @@ public class InstallableListPage extends PackageListPage {
        private Button nativeMinimalButton;
        private Button addExtraButton;
 
-       private AddExtraRepositoryDialog extraDialog = null;
+       private AddExtraRepositoryDialog extraDialog;
        
        /**
         * @param parent
@@ -106,6 +106,8 @@ public class InstallableListPage extends PackageListPage {
                disableTitleBounds();
                disableSubtitleBounds();
                
+               setTitleLabelText(STRING_TITLE);
+               
                buttonComposite = new Composite(getCustomComposite(), SWT.NONE);
 
 //             buttonComposite.setSize(10, 60);
@@ -121,7 +123,6 @@ public class InstallableListPage extends PackageListPage {
         * Set Install Type radio buttons.
         */
        private void setButtons() {
-               setTitleLabelText(STRING_TITLE);
                setTypicalButton();
                setMinimalButton();
                setCustomButton();
@@ -332,12 +333,7 @@ public class InstallableListPage extends PackageListPage {
                        public void widgetSelected(SelectionEvent e) {
                                extraDialog = new AddExtraRepositoryDialog(buttonComposite.getShell(), viewController);
                                extraDialog.open();
-                               
-//                             if (sl_composite.topControl == compositeComponentSelectionPage) {
-//                                     compositeComponentSelectionPage.loadPage(controller);
-//                             } else if (sl_composite.topControl == compositeUpdatableListPage) {
-//                                     compositeUpdatableListPage.loadPage(controller);
-//                             }
+                               loadPage(InstallManagerWindow.getInstallManagerWindow().getViewController());
                        }
                });
        }
@@ -348,7 +344,7 @@ public class InstallableListPage extends PackageListPage {
         */
        private void refreshByType(InstallType instType) {
                String iType = null;
-               
+
                if (instType == InstallType.TYPICAL) {
                        iType = TYPICAL_PACKAGE_NAME;
                } else if (instType == InstallType.MINIMAL) {
@@ -443,9 +439,9 @@ public class InstallableListPage extends PackageListPage {
 
                try {
                        if (Config.isSupportMultiSDK()) {
-                               loadPackagesToTreeViewer(viewController.getAllMetaPackages());
+                               loadPackagesToTreeViewer(viewController.getAllMetaPackages(), Type.INSTALL);
                        } else {
-                               loadPackagesToTreeViewer(viewController.getInstallableMetaPackageList());                               
+                               loadPackagesToTreeViewer(viewController.getInstallableMetaPackageList(), Type.INSTALL);                         
                        }
                        viewController.loadSdkExtension();
                        addExtensionPackagesToExtra(viewController.getRootMetaPackageListOfExtension());
index 9a0f8af..083cf58 100644 (file)
@@ -32,11 +32,15 @@ import java.text.DecimalFormat;
 import java.util.List;\r
 \r
 import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.events.SelectionAdapter;\r
+import org.eclipse.swt.events.SelectionEvent;\r
 import org.eclipse.swt.graphics.Color;\r
+import org.eclipse.swt.graphics.RGB;\r
+import org.eclipse.swt.widgets.Button;\r
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.swt.widgets.Display;\r
+import org.eclipse.swt.widgets.Event;\r
 import org.eclipse.swt.widgets.Label;\r
-import org.eclipse.swt.widgets.ProgressBar;\r
 import org.tizen.installmanager.core.Config;\r
 import org.tizen.installmanager.core.IMExitException;\r
 import org.tizen.installmanager.core.IMFatalException;\r
@@ -52,9 +56,10 @@ import org.tizen.installmanager.lib.ErrorController.ErrorCode;
 import org.tizen.installmanager.ui.InstallManagerWindow;\r
 import org.tizen.installmanager.ui.dialog.MessageBoxDlg;\r
 import org.tizen.installmanager.ui.dialog.MessageBoxDlg.DialogType;\r
+import org.tizen.installmanager.ui.lib.IMCircularGraph;\r
 \r
 /**\r
- * @author Taeyoung Son <taeyoung2.son@samsung.com>\r
+ * @author Yongsung Kim <yongsung1.kim@samsung.com>\r
  * \r
  */\r
 public class InstallingPage extends InstallPage {\r
@@ -70,24 +75,25 @@ public class InstallingPage extends InstallPage {
        static final int DAY = HOUR * 24;\r
 \r
        private List<String> selectedList;\r
-       private ProgressBar downloadProgressBar;\r
-       private Label downloadProgressTitleLabel;\r
+       private Label downloadCurrentSizeLabel;\r
+       private Label downloadTotalSizeLabel;\r
        private Label downloadFileNameLabel;\r
-       private Label downloadProgressLabel;\r
        private Label downloadSpeedLabel;\r
 \r
-       private ProgressBar installProgressBar;\r
-       private Label installProgressTitleLabel;\r
        private Label installFileNameLabel;\r
-       private Label installProgressLabel;\r
-       private Label installRemainingTimeLabel;\r
+       private Label remainingTimeLabel;\r
+       private Label remainingTimeTitleLabel;\r
+       \r
+       private Button detailOpenButton;\r
+       private Button detailCloseButton;\r
+       private Label detailLabel;\r
 \r
        private ViewController viewController;\r
        private String installPath;\r
        private InstallProgressMonitor monitor;\r
        private InstallManagerWindow mainWindow;\r
        Display display;\r
-\r
+       \r
        /**\r
         * Set basic environment of installing page.\r
         * \r
@@ -100,77 +106,127 @@ public class InstallingPage extends InstallPage {
                disableSubtitleBounds();\r
                \r
                setTitleLabelText(STRING_TITLE);\r
-\r
-//             setLeftImageFromResource(RSC_PATH_IMAGE);\r
-//             setTitle(STRING_TITLE);\r
-//             setSubTitle(STRING_SUBTITLE);\r
-\r
-               // download progress bar\r
-               downloadProgressBar = new ProgressBar(customComposite, SWT.NONE);\r
-               downloadProgressBar.setBounds(30, 93, 406, 20);\r
-\r
-               downloadProgressTitleLabel = new Label(customComposite, SWT.NONE);\r
-               downloadProgressTitleLabel.setBounds(30, 65, 240, 23);\r
-               downloadProgressTitleLabel.setBackground(InstallManagerWindow\r
-                               .getBackgroundColor());\r
-\r
-               downloadProgressLabel = new Label(customComposite, SWT.NONE);\r
-               downloadProgressLabel.setAlignment(SWT.RIGHT);\r
-               downloadProgressLabel.setBounds(315, 65, 80, 23);\r
-               downloadProgressLabel.setForeground(new Color(null, 0, 108, 209));\r
-               downloadProgressLabel.setText("");\r
-\r
+               setProgressCircle(customComposite, CIRCULAR_TYPE.PERCENTAGE);\r
+               setDownloadCurrentSizeLabel();\r
+               setDownloadTotalSizeLabel();\r
+               setDownloadSpeedLabel();\r
+               setRemainingTimeTitleLabel();\r
+               setRemainingTimeLabel();\r
+               setDownloadFileNameLabel();\r
+               setInstallFileNameLabel();\r
+               setDetailOpenButton(); // to do later\r
+               setDetailCloseButton(); // to do later\r
+               setDetailLabel(); // to do later\r
+       }\r
+       \r
+       private void setDownloadCurrentSizeLabel() {\r
+               downloadCurrentSizeLabel = new Label(customComposite, SWT.NONE);\r
+               downloadCurrentSizeLabel.setAlignment(SWT.RIGHT);\r
+               downloadCurrentSizeLabel.setBounds(100, 133, 90, 20);\r
+               downloadCurrentSizeLabel.setBackground(InstallManagerWindow.getBackgroundColor());\r
+//             downloadCurrentSizeLabel.setBackground(new Color(null, new RGB(34, 76, 48)));\r
+       }\r
+       \r
+       private void setDownloadTotalSizeLabel() {\r
+               downloadTotalSizeLabel = new Label(customComposite, SWT.NONE);\r
+               downloadTotalSizeLabel.setAlignment(SWT.LEFT);\r
+               downloadTotalSizeLabel.setBounds(190, 133, 60, 20);\r
+               downloadTotalSizeLabel.setBackground(InstallManagerWindow.getBackgroundColor());\r
+//             downloadTotalSizeLabel.setBackground(new Color(null, new RGB(67, 32, 48)));\r
+               downloadTotalSizeLabel.setForeground(PROGRESS_CIRCLE_BACKGROUND_COLOR);\r
+       }\r
+       \r
+       private void setDownloadSpeedLabel() {\r
+               downloadSpeedLabel = new Label(customComposite, SWT.NONE);\r
+               downloadSpeedLabel.setAlignment(SWT.LEFT);\r
+               downloadSpeedLabel.setBounds(250, 133, 80, 20);\r
+               downloadSpeedLabel.setBackground(InstallManagerWindow.getBackgroundColor());\r
+//             downloadSpeedLabel.setBackground(new Color(null, new RGB(34, 76, 48)));\r
+               downloadSpeedLabel.setForeground(PROGRESS_CIRCLE_BACKGROUND_COLOR);\r
+//             downloadSpeedLabel.setText("Download speed");\r
+       }\r
+       \r
+       private void setRemainingTimeTitleLabel() {\r
+               remainingTimeTitleLabel = new Label(customComposite, SWT.NONE);\r
+               remainingTimeTitleLabel.setAlignment(SWT.RIGHT);\r
+               remainingTimeTitleLabel.setBounds(330, 133, 120, 20);\r
+               remainingTimeTitleLabel.setBackground(InstallManagerWindow.getBackgroundColor());\r
+//             remainingTimeTitleLabel.setBackground(new Color(null, new RGB(17, 136, 128)));\r
+               remainingTimeTitleLabel.setText("Remaining time");\r
+       }\r
+       \r
+       private void setRemainingTimeLabel() {\r
+               remainingTimeLabel = new Label(customComposite, SWT.NONE);\r
+               remainingTimeLabel.setAlignment(SWT.RIGHT);\r
+               remainingTimeLabel.setBounds(450, 133, 100, 20);\r
+               remainingTimeLabel.setBackground(InstallManagerWindow.getBackgroundColor());\r
+//             remainingTimeLabel.setBackground(new Color(null, new RGB(97, 16, 128)));\r
+               remainingTimeLabel.setForeground(PROGRESS_CIRCLE_BACKGROUND_COLOR);\r
+               remainingTimeLabel.setText("time estimating...");\r
+       }\r
+       \r
+       private void setDownloadFileNameLabel() {\r
                downloadFileNameLabel = new Label(customComposite, SWT.NONE);\r
-               downloadFileNameLabel.setBounds(30, 121, 260, 23);\r
-               downloadFileNameLabel.setForeground(new Color(null, 96, 96, 96));\r
-               downloadFileNameLabel.setBackground(InstallManagerWindow\r
-                               .getBackgroundColor());\r
+               downloadFileNameLabel.setAlignment(SWT.CENTER);\r
+               downloadFileNameLabel.setBounds(0, 169, 628, 20);\r
+               downloadFileNameLabel.setBackground(InstallManagerWindow.getBackgroundColor());\r
+               downloadFileNameLabel.setForeground(PROGRESS_CIRCLE_BACKGROUND_COLOR);\r
                downloadFileNameLabel.setText("download file name");\r
-\r
-               downloadSpeedLabel = new Label(customComposite, SWT.NONE);\r
-               downloadSpeedLabel.setAlignment(SWT.RIGHT);\r
-               downloadSpeedLabel.setBounds(295, 121, 120, 23);\r
-               downloadSpeedLabel.setBackground(InstallManagerWindow\r
-                               .getBackgroundColor());\r
-               downloadSpeedLabel.setForeground(new Color(null, 0, 108, 209));\r
-               downloadSpeedLabel.setText("Download speed");\r
-\r
-               // install progress bar\r
-               installProgressBar = new ProgressBar(customComposite, SWT.NONE);\r
-               installProgressBar.setBounds(30, 190, 406, 20);\r
-\r
-               installProgressTitleLabel = new Label(customComposite, SWT.NONE);\r
-               installProgressTitleLabel.setBounds(30, 162, 240, 23);\r
-               installProgressTitleLabel.setBackground(InstallManagerWindow\r
-                               .getBackgroundColor());\r
-\r
-               installProgressLabel = new Label(customComposite, SWT.NONE);\r
-               installProgressLabel.setAlignment(SWT.RIGHT);\r
-               installProgressLabel.setBounds(315, 162, 80, 23);\r
-               installProgressLabel.setForeground(new Color(null, 0, 108, 209));\r
-               installProgressLabel.setText("");\r
-\r
+       }\r
+       \r
+       private void setInstallFileNameLabel() {\r
                installFileNameLabel = new Label(customComposite, SWT.NONE);\r
-               installFileNameLabel.setBounds(30, 218, 260, 23);\r
+               installFileNameLabel.setAlignment(SWT.CENTER);\r
+               installFileNameLabel.setBounds(0, 189, 628, 20);\r
                installFileNameLabel.setForeground(new Color(null, 96, 96, 96));\r
-               installFileNameLabel.setBackground(InstallManagerWindow\r
-                               .getBackgroundColor());\r
+               installFileNameLabel.setBackground(InstallManagerWindow.getBackgroundColor());\r
                installFileNameLabel.setText("install file name");\r
-\r
-               installRemainingTimeLabel = new Label(customComposite, SWT.NONE);\r
-               installRemainingTimeLabel.setAlignment(SWT.RIGHT);\r
-               installRemainingTimeLabel.setBounds(295, 218, 120, 23);\r
-               installRemainingTimeLabel.setBackground(InstallManagerWindow\r
-                               .getBackgroundColor());\r
-               installRemainingTimeLabel.setForeground(new Color(null, 0, 108, 209));\r
-               installRemainingTimeLabel.setText("Remaining time");\r
        }\r
        \r
-//     private void setRequiredSpaceLabel() {\r
-//             spaceRequiredLabel = new Label(customComposite, SWT.CENTER);\r
-//             spaceRequiredLabel.setBounds(10, 133, 628, 20);\r
-//             spaceRequiredLabel.setBackground(InstallManagerWindow.getBackgroundColor());\r
-//     }\r
+       private void setDetailOpenButton() {\r
+               detailOpenButton = new Button(customComposite, SWT.PUSH);\r
+               detailOpenButton.setAlignment(SWT.CENTER);\r
+               detailOpenButton.setBounds(253, 210, 122, 26);\r
+               detailOpenButton.setText("Show Detail");\r
+               \r
+               detailOpenButton.addSelectionListener(new SelectionAdapter() {\r
+                       @Override\r
+                       public void widgetSelected(SelectionEvent arg0) {\r
+                               System.out.println("Detail button is pushed.");\r
+                               downloadFileNameLabel.setVisible(false);\r
+                               installFileNameLabel.setVisible(false);\r
+                               detailOpenButton.setVisible(false);\r
+                               detailCloseButton.setVisible(true);\r
+                               detailLabel.setVisible(true);\r
+                       }\r
+               });\r
+       }\r
+       \r
+       private void setDetailCloseButton() {\r
+               detailCloseButton = new Button(customComposite, SWT.PUSH);\r
+               detailCloseButton.setAlignment(SWT.CENTER);\r
+               detailCloseButton.setBounds(496, 170, 122, 26);\r
+               detailCloseButton.setText("Close");\r
+               \r
+               detailCloseButton.addSelectionListener(new SelectionAdapter() {\r
+                       @Override\r
+                       public void widgetSelected(SelectionEvent arg0) {\r
+                               System.out.println("close button is pushed.");\r
+                               downloadFileNameLabel.setVisible(true);\r
+                               installFileNameLabel.setVisible(true);\r
+                               detailOpenButton.setVisible(true);\r
+                               detailCloseButton.setVisible(false);\r
+                               detailLabel.setVisible(false);\r
+                       }\r
+               });\r
+       }\r
+       \r
+       private void setDetailLabel() {\r
+               detailLabel = new Label(customComposite, SWT.NONE);\r
+               detailLabel.setAlignment(SWT.LEFT);\r
+               detailLabel.setBounds(10, 197, 608, 97);\r
+               detailLabel.setVisible(false);\r
+       }\r
 \r
        /**\r
         * First of all this function check package whether update or not and check\r
@@ -213,7 +269,7 @@ public class InstallingPage extends InstallPage {
                        }\r
                }\r
 \r
-//             new InstallThread(monitor).start();\r
+               new InstallThread(monitor).start();\r
 \r
                return true;\r
        }\r
@@ -266,8 +322,7 @@ public class InstallingPage extends InstallPage {
                boolean bResult = false;\r
 \r
                try {\r
-                       bResult = viewController\r
-                                       .install(selectedList, installPath, monitor);\r
+                       bResult = viewController.install(selectedList, installPath, monitor);\r
                        // ErrorController.setError(ErrorCode.INSTALLATION_FAIL);\r
                } catch (IMInstallCancelException e) {\r
                        bResult = false;\r
@@ -308,10 +363,18 @@ public class InstallingPage extends InstallPage {
                private boolean cancelRequested;\r
 \r
                private double totalDownloadSize = 0;\r
+               private int percentageOfDownloadProgress = 0;\r
+               private double downloadRemainTime = 0;\r
+               \r
                private double totalInstallSize = 0;\r
+               private double installRemainTime = 0;\r
+               private int percentageOfInstallProgress = 0;\r
+               private double totalPastTime = 0;\r
                \r
                private static final String PATTERN = ".00";\r
                private DecimalFormat dformat = new DecimalFormat(PATTERN);\r
+               \r
+               private IMCircularGraph circularGraph = getCircularGraph();\r
 \r
                @Override\r
                public void beginTask(String title, int totalWork) {\r
@@ -321,8 +384,7 @@ public class InstallingPage extends InstallPage {
                        }\r
                }\r
 \r
-               public void beginTask(int totalWork, long totalDownloadSize,\r
-                               long totalInstallSize) {\r
+               public void beginTask(int totalWork, long totalDownloadSize, long totalInstallSize) {\r
                        if (display == null || display.isDisposed()) {\r
                                setCanceled(true);\r
                                return;\r
@@ -336,12 +398,9 @@ public class InstallingPage extends InstallPage {
                                @Override\r
                                public void run() {\r
                                        // initialize the download\r
-                                       downloadProgressTitleLabel\r
-                                                       .setText("Downloading the sdk packages");\r
                                        downloadFileNameLabel.setText("Preparing the download");\r
 \r
                                        //initialize the installation\r
-                                       installProgressTitleLabel.setText("Installing the sdk packages");\r
                                        installFileNameLabel.setText("Waiting for download");\r
                                }\r
                        });\r
@@ -386,53 +445,49 @@ public class InstallingPage extends InstallPage {
                        if (Config.status == Config.Status.INSTALL) {\r
                                Registry.saveSDKInfo(installPath);\r
                        }\r
-\r
+                       \r
                        display.asyncExec(new Runnable() {\r
                                @Override\r
                                public void run() {\r
-                                       downloadProgressBar.setSelection(100);\r
-                                       installProgressBar.setSelection(100);\r
+                                       circularGraph.update(100);\r
 \r
                                        CompletePage completePage = mainWindow.getCompletePage();\r
 \r
                                        if (ErrorController.checkInstallationSuccess()) {\r
-                                               completePage.setTitle("Installation Completed");\r
+                                               completePage.setTitleLabelText("Installation Completed");\r
 \r
                                                String customMessage = "";\r
 \r
                                                if (Platform.isUbuntu()) {\r
                                                        if (viewController.isUnityEnvironment()) {\r
-                                                               customMessage = "Thank you for installing the Tizen SDK. \n\n"\r
-                                                                               + "To use the SDK, search and select 'Tizen IDE' on your unity dash. ";\r
+                                                               customMessage = "Thank you for installing the Tizen SDK. \n"\r
+                                                                               + "To use the SDK, search and select 'Tizen IDE' on your unity dash.";\r
                                                        } else {\r
-                                                               customMessage = "Thank you for installing the Tizen SDK. \n\n"\r
-                                                                               + "To use the SDK, go to Application > Tizen SDK > Tizen IDE. ";\r
+                                                               customMessage = "Thank you for installing the Tizen SDK. \n"\r
+                                                                               + "To use the SDK, go to Application > Tizen SDK > Tizen IDE.";\r
                                                        }\r
                                                } else if (Platform.isWindows()) {\r
-                                                       customMessage = "Thank you for installing the Tizen SDK. "\r
-                                                                       + "To use the SDK, go to Start > All Programs > Tizen SDK > Tizen IDE. \n\n";\r
+                                                       customMessage = "Thank you for installing the Tizen SDK. \n"\r
+                                                                       + "To use the SDK, go to Start > All Programs > Tizen SDK > Tizen IDE.";\r
                                                } else {\r
                                                        customMessage = "Thank you for installing the Tizen SDK. ";\r
                                                }\r
 \r
-                                               completePage.setCustomMessage(customMessage);\r
+                                               completePage.setCustomMessage(customMessage, SWT.LEFT);\r
                                                completePage.setErrorTextMsg();\r
 \r
                                                // if (ErrorController.existInfoMessage()) {\r
-                                               completePage\r
-                                                               .setInfoMessage(InfoCode.RESTART_THE_COMPUTER\r
-                                                                               .getInfoMessage()/*\r
-                                                                                                                * ErrorController.\r
-                                                                                                                * getInfoMessage()\r
-                                                                                                                */);\r
+                                               completePage.setInfoMessage(InfoCode.RESTART_THE_COMPUTER.getInfoMessage()\r
+                                                               /*ErrorController.getInfoMessage()*/, SWT.RIGHT);\r
                                                // }\r
 \r
                                                Log.log("installation complete");\r
                                        } else {\r
                                                Log.log("(un)installation failed");\r
-                                               completePage.setTitle("(Un)Installation failed");\r
-                                               completePage.setCustomErrorMessage(ErrorController\r
-                                                               .getErrorMessage() + "\n");\r
+                                               completePage.setTitleLabelText("(Un)Installation failed");\r
+                                               ErrorController.setErrorMessage("Test error");\r
+//                                             completePage.setCustomErrorMessage(ErrorController.getErrorMessage() + "\n", SWT.RIGHT);\r
+                                               completePage.setCustomErrorMessage(ErrorController.getErrorMessage(), SWT.RIGHT);\r
                                                mainWindow.getCompletePage().showCheckButton(false);\r
                                        }\r
 \r
@@ -482,10 +537,7 @@ public class InstallingPage extends InstallPage {
                        display.syncExec(new Runnable() {\r
                                @Override\r
                                public void run() {\r
-                                       installProgressLabel.setText(downloadProgressWork + "/"\r
-                                                       + (totalWork));\r
-                                       downloadProgressBar\r
-                                                       .setSelection(100 * ((int) downloadProgressWork / (int) totalWork));\r
+                                       \r
                                }\r
                        });\r
                }\r
@@ -500,9 +552,7 @@ public class InstallingPage extends InstallPage {
                        display.asyncExec(new Runnable() {\r
                                @Override\r
                                public void run() {\r
-                                       downloadProgressLabel.setText(downloadProgressWork + "/"\r
-                                                       + (totalWork));\r
-                                       downloadFileNameLabel.setText(getEtcString(fileName));\r
+                                       downloadFileNameLabel.setText("Downloading : " + getEtcString(fileName));\r
                                }\r
                        });\r
                }\r
@@ -520,67 +570,99 @@ public class InstallingPage extends InstallPage {
                        display.asyncExec(new Runnable() {\r
                                @Override\r
                                public void run() {\r
-                                       /* set total size */\r
-                                       String totalSize = "";\r
-                                       if (totalDownloadSize >= GB_SIZE) {\r
-                                               totalSize = dformat\r
-                                                               .format((totalDownloadSize / GB_SIZE)) + "GB";\r
-                                       } else if (totalDownloadSize >= MB_SIZE) {\r
-                                               totalSize = dformat\r
-                                                               .format((totalDownloadSize / MB_SIZE)) + "MB";\r
-                                       } else {\r
-                                               totalSize = totalDownloadSize + "KB";\r
-                                       }\r
-\r
                                        /* set current download size */\r
                                        downloadProgressSize += size / (double) 1024;\r
-                                       String currentSize = "";\r
-                                       if (downloadProgressSize >= GB_SIZE) {\r
-                                               currentSize = dformat\r
-                                                               .format((downloadProgressSize / GB_SIZE))\r
-                                                               + "GB";\r
-                                       } else if (downloadProgressSize >= MB_SIZE) {\r
-                                               currentSize = dformat\r
-                                                               .format((downloadProgressSize / MB_SIZE))\r
-                                                               + "MB";\r
-                                       } else {\r
-                                               currentSize = dformat.format(downloadProgressSize)\r
-                                                               + "KB";\r
-                                       }\r
-\r
-                                       // set size to progress bar.\r
-//                                     downloadProgressBar.setToolTipText(currentSize + "/"\r
-//                                                     + totalSize);\r
 \r
-                                       long pastTimes = System.currentTimeMillis()\r
-                                                       - downloadStartTime;\r
-\r
-                                       double downloadVelocity = 0;\r
+                                       long pastTimes = System.currentTimeMillis() - downloadStartTime;\r
 \r
+                                       String remainTimeStr = "";\r
                                        String downloadVelocityStr = "estimating...";\r
+                                       String downloadCurrentStr = "";\r
+                                       String downloadTotalStr = "";\r
+                                       \r
                                        if (pastTimes > 5000) {\r
-                                               downloadVelocity = downloadProgressSize\r
+                                               double downloadVelocity = downloadProgressSize\r
                                                                / (double) (pastTimes / (double) 1000);\r
 \r
-                                               if (downloadVelocity >= GB_SIZE) {\r
-                                                       downloadVelocityStr = dformat\r
-                                                                       .format(downloadVelocity / GB_SIZE)\r
-                                                                       + "GB/s";\r
-                                               } else if (downloadVelocity >= MB_SIZE) {\r
-                                                       downloadVelocityStr = dformat\r
-                                                                       .format(downloadVelocity / MB_SIZE)\r
-                                                                       + "MB/s";\r
-                                               } else {\r
-                                                       downloadVelocityStr = dformat\r
-                                                                       .format(downloadVelocity / KB_SIZE)\r
-                                                                       + "KB/s";\r
+                                               downloadVelocityStr = divideSizeString(downloadVelocity) + "/s";\r
+                                               downloadCurrentStr = divideSizeString(downloadProgressSize) + " /";\r
+                                               downloadTotalStr = divideSizeString(totalDownloadSize);\r
+                                               \r
+                                               double remainSize = totalDownloadSize - downloadProgressSize;\r
+                                               downloadRemainTime = remainSize / downloadVelocity;\r
+                                               if (downloadRemainTime >= installRemainTime) {\r
+                                                       \r
+//                                                     if (installVelocity != 0 && sizeOfLastDowloadPackage != 0) {\r
+//                                                             remainTime += sizeOfLastDowloadPackage / installVelocity;\r
+//                                                     }\r
+\r
+                                                       int day = (int) (downloadRemainTime / DAY);\r
+                                                       int hour = (int) ((downloadRemainTime % DAY) / HOUR);\r
+                                                       int min = (int) ((downloadRemainTime % HOUR) / MIN);\r
+                                                       int sec = (int) (downloadRemainTime % MIN);\r
+\r
+                                                       if (day > 0) {\r
+                                                               remainTimeStr = day + "day ";\r
+                                                       }\r
+\r
+                                                       if (hour > 0) {\r
+                                                               remainTimeStr += hour + "hour ";\r
+                                                       }\r
+\r
+                                                       if (min > 0) {\r
+                                                               remainTimeStr += min + "min ";\r
+                                                       }\r
+\r
+                                                       if (sec > 0) {\r
+                                                               remainTimeStr += sec + "sec";\r
+                                                       }\r
+                                                       \r
+                                                       remainingTimeLabel.setText(remainTimeStr);\r
                                                }\r
+                                       } else {\r
+                                               remainingTimeLabel.setText("estimating...");\r
+                                       }\r
+\r
+                                       downloadSpeedLabel.setText(downloadVelocityStr);\r
+                                       downloadCurrentSizeLabel.setText(downloadCurrentStr);\r
+                                       downloadTotalSizeLabel.setText(downloadTotalStr);\r
+                                       \r
+                                       int percentage = (int) (100 * downloadProgressSize / totalDownloadSize);\r
+                                       if (percentageOfDownloadProgress != percentage) {\r
+                                               percentageOfDownloadProgress = percentage;\r
+//                                             circularGraph.update(percentage);\r
                                        }\r
+                               }\r
+                       });\r
+               }\r
+               \r
+               @Override\r
+               public void revertDownloadSize(final long size) {\r
+                       if (display == null || display.isDisposed()) {\r
+                               setCanceled(true);\r
+                               return;\r
+                       }\r
 \r
-                                       downloadSpeedLabel.setText("speed : "\r
-                                                       + downloadVelocityStr);\r
-                                       downloadProgressBar\r
-                                                       .setSelection((int) (100 * downloadProgressSize / totalDownloadSize));\r
+                       display.asyncExec(new Runnable() {\r
+                               @Override\r
+                               public void run() {\r
+                                       /* set current download size */\r
+                                       downloadProgressSize -= size / (double) 1024;\r
+                               }\r
+                       });\r
+               }\r
+               \r
+               @Override\r
+               public void downloadDone() {\r
+                       if (display == null || display.isDisposed()) {\r
+                               setCanceled(true);\r
+                               return;\r
+                       }\r
+                       \r
+                       display.asyncExec(new Runnable() {\r
+                               @Override\r
+                               public void run() {\r
+                                       \r
                                }\r
                        });\r
                }\r
@@ -596,12 +678,19 @@ public class InstallingPage extends InstallPage {
                        display.asyncExec(new Runnable() {\r
                                @Override\r
                                public void run() {\r
-                                       installProgressLabel.setText(installProgressWork + "/"\r
-                                                       + (totalWork));\r
-                                       installFileNameLabel.setText(getEtcString(fileName));\r
+                                       installFileNameLabel.setText("Installing : " + getEtcString(fileName));\r
                                }\r
                        });\r
                }\r
+               \r
+               public void installEnd() {\r
+                       long pastTime = System.currentTimeMillis()\r
+                                       - installStartTime;\r
+                       \r
+                       totalPastTime += pastTime;\r
+                       \r
+                       installStartTime = 0;\r
+               }\r
 \r
                @Override\r
                public void workedInstallSize(final long size) {\r
@@ -615,77 +704,69 @@ public class InstallingPage extends InstallPage {
 \r
                                @Override\r
                                public void run() {\r
-                                       /* set total size */\r
-\r
-                                       String totalSize = "";\r
-                                       if (totalInstallSize >= GB_SIZE) {\r
-                                               totalSize = dformat\r
-                                                               .format((totalInstallSize / GB_SIZE)) + "GB";\r
-                                       } else if (totalInstallSize >= MB_SIZE) {\r
-                                               totalSize = dformat\r
-                                                               .format((totalInstallSize / MB_SIZE)) + "MB";\r
-                                       } else {\r
-                                               totalSize = totalInstallSize + "KB";\r
-                                       }\r
-\r
                                        /* set current download size */\r
                                        installProgressSize += size / (double) 1024;\r
 \r
-                                       String currentSize = "";\r
-                                       if (installProgressSize >= GB_SIZE) {\r
-                                               currentSize = dformat\r
-                                                               .format((installProgressSize / GB_SIZE)) + "GB";\r
-                                       } else if (downloadProgressSize >= MB_SIZE) {\r
-                                               currentSize = dformat\r
-                                                               .format((installProgressSize / MB_SIZE)) + "MB";\r
-                                       } else {\r
-                                               currentSize = dformat.format(installProgressSize)\r
-                                                               + "KB";\r
-                                       }\r
-\r
-                                       // set size to progress bar.\r
-//                                     installProgressBar.setToolTipText(currentSize + "/"\r
-//                                                     + totalSize);\r
+                                       double pastTime = totalPastTime + (System.currentTimeMillis()\r
+                                                       - installStartTime);\r
 \r
-                                       long pastTimes = System.currentTimeMillis()\r
-                                                       - installStartTime;\r
-\r
-                                       // set remain time\r
-                                       if (pastTimes > 5000) {\r
+                                       //set remain time\r
+                                       if (pastTime > 5000) {\r
+                                               // set remain time\r
                                                double installVelocity = installProgressSize\r
-                                                               / (double) (pastTimes / (double) 1000);\r
-\r
+                                                               / (double) (pastTime / (double) 1000);\r
                                                double remainSize = totalInstallSize\r
                                                                - installProgressSize;\r
-                                               double remainTime = remainSize / installVelocity;\r
+                                               \r
+                                               installRemainTime = remainSize / installVelocity;\r
+                                               if (installRemainTime > downloadRemainTime) {\r
 \r
-                                               int day = (int) (remainTime / DAY);\r
-                                               int hour = (int) ((remainTime % DAY) / HOUR);\r
-                                               int min = (int) ((remainTime % HOUR) / MIN);\r
-                                               int sec = (int) (remainTime % MIN);\r
+                                                       int day = (int) (installRemainTime / DAY);\r
+                                                       int hour = (int) ((installRemainTime % DAY) / HOUR);\r
+                                                       int min = (int) ((installRemainTime % HOUR) / MIN);\r
+                                                       int sec = (int) (installRemainTime % MIN);\r
 \r
-                                               if (day > 0) {\r
-                                                       remainTimeStr = day + "day ";\r
-                                               }\r
+                                                       if (day > 0) {\r
+                                                               remainTimeStr = day + "day ";\r
+                                                       }\r
 \r
-                                               if (hour > 0) {\r
-                                                       remainTimeStr += hour + "hour ";\r
-                                               }\r
+                                                       if (hour > 0) {\r
+                                                               remainTimeStr += hour + "hour ";\r
+                                                       }\r
 \r
-                                               if (min > 0) {\r
-                                                       remainTimeStr += min + "min ";\r
-                                               }\r
+                                                       if (min > 0) {\r
+                                                               remainTimeStr += min + "min ";\r
+                                                       }\r
 \r
-                                               if (sec > 0) {\r
-                                                       remainTimeStr += sec + "sec";\r
+                                                       if (sec > 0) {\r
+                                                               remainTimeStr += sec + "sec";\r
+                                                       }\r
+                                                       \r
+                                                       remainingTimeLabel.setText(remainTimeStr);\r
                                                }\r
-                                       } else {\r
-                                               remainTimeStr = "estimating...";\r
                                        }\r
-\r
-                                       installRemainingTimeLabel.setText(remainTimeStr);\r
-                                       installProgressBar\r
-                                                       .setSelection((int) (100 * installProgressSize / totalInstallSize));\r
+                                       \r
+                                       int percentage = (int) (100 * installProgressSize / totalInstallSize);\r
+                                       \r
+                                       if (percentageOfInstallProgress != percentage) {\r
+                                               percentageOfInstallProgress = percentage;\r
+                                               circularGraph.update(percentage);\r
+                                       }\r
+                               }\r
+                       });\r
+               }\r
+               \r
+               @Override\r
+               public void installDone() {\r
+                       if (display == null || display.isDisposed()) {\r
+                               setCanceled(true);\r
+                               return;\r
+                       }\r
+                       \r
+                       display.asyncExec(new Runnable() {\r
+                               @Override\r
+                               public void run() {\r
+                                       circularGraph.update(100);\r
                                }\r
                        });\r
                }\r
@@ -703,7 +784,7 @@ public class InstallingPage extends InstallPage {
                        display.syncExec(new Runnable() {\r
                                @Override\r
                                public void run() {\r
-                                       downloadProgressTitleLabel.setText(title);\r
+                                       \r
                                }\r
                        });\r
                }\r
@@ -732,664 +813,17 @@ public class InstallingPage extends InstallPage {
                        }\r
                        return etcString;\r
                }\r
+               \r
+               private String divideSizeString(double size) {\r
+                       String divided = "";\r
+                       if (size >= GB_SIZE) {\r
+                               divided = dformat.format(size / GB_SIZE) + "GB";\r
+                       } else if (size >= MB_SIZE) {\r
+                               divided = dformat.format(size / MB_SIZE) + "MB";\r
+                       } else {\r
+                               divided = dformat.format(size / KB_SIZE) + "KB";\r
+                       }\r
+                       return divided;\r
+               }\r
        }\r
 }\r
-//=======
-///*
-//*  InstallManager
-//*
-//* Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
-//*
-//* Contact: 
-//* Wooyoung Cho <wooyoung1.cho@samsung.com>
-//* Shihyun Kim <shihyun.kim@samsung.com>
-//* Taeyoung Son <taeyoung2.son@samsung.com>
-//* Yongsung kim <yongsung1.kim@samsung.com>
-//* 
-// * Licensed under the Apache License, Version 2.0 (the "License");
-//* you may not use this file except in compliance with the License.
-//* You may obtain a copy of the License at
-//*
-//* http://www.apache.org/licenses/LICENSE-2.0
-//*
-//* Unless required by applicable law or agreed to in writing, software
-//* distributed under the License is distributed on an "AS IS" BASIS,
-//* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//* See the License for the specific language governing permissions and
-//* limitations under the License.
-//*
-//* Contributors:
-//* - S-Core Co., Ltd
-//*
-//*/
-//
-//package org.tizen.installmanager.ui.page;
-//
-//import java.text.DecimalFormat;
-//import java.util.List;
-//
-//import org.eclipse.swt.SWT;
-//import org.eclipse.swt.graphics.Color;
-//import org.eclipse.swt.widgets.Composite;
-//import org.eclipse.swt.widgets.Display;
-//import org.eclipse.swt.widgets.Label;
-//import org.eclipse.swt.widgets.ProgressBar;
-//import org.tizen.installmanager.core.Config;
-//import org.tizen.installmanager.core.IMExitException;
-//import org.tizen.installmanager.core.IMFatalException;
-//import org.tizen.installmanager.core.IMInstallCancelException;
-//import org.tizen.installmanager.lib.ErrorController;
-//import org.tizen.installmanager.lib.ErrorController.InfoCode;
-//import org.tizen.installmanager.lib.IIMProgressMonitor;
-//import org.tizen.installmanager.lib.Log;
-//import org.tizen.installmanager.lib.Platform;
-//import org.tizen.installmanager.lib.ProgramController;
-//import org.tizen.installmanager.lib.Registry;
-//import org.tizen.installmanager.lib.ErrorController.ErrorCode;
-//import org.tizen.installmanager.ui.InstallManagerWindow;
-//import org.tizen.installmanager.ui.dialog.MessageBoxDlg;
-//import org.tizen.installmanager.ui.dialog.MessageBoxDlg.DialogType;
-//
-///**
-// * @author Taeyoung Son <taeyoung2.son@samsung.com>
-// * 
-// */
-//public class InstallingPage extends PageTemplate {
-//     static final String RSC_PATH_IMAGE = RESOURCE_PATH
-//                     + "/install_manager_graphicmotif_003.png";
-//     static final String STRING_TITLE = "Installation Progress";
-//     static final String STRING_SUBTITLE = "Wait while the Tizen SDK installation is being processed.";
-//
-//     static final double KB_SIZE = 1;
-//     static final double MB_SIZE = KB_SIZE * 1024;
-//     static final double GB_SIZE = MB_SIZE * 1024;
-//
-//     static final int SEC = 1;
-//     static final int MIN = SEC * 60;
-//     static final int HOUR = MIN * 60;
-//     static final int DAY = HOUR * 24;
-//
-//     private static String totalSize;
-//     private static String currentSize;
-//
-//     private List<String> selectedList;
-//     private ProgressBar progressBar;
-//     private Label statusLabel;
-//     private Label mSubTitleOfProgress;
-//     private Label installedNumberLabel;
-//     private Label mDownloadVelocity;
-//
-//     private ViewController viewController;
-//     private String installPath;
-//     private InstallProgressMonitor monitor;
-//     private InstallManagerWindow mainWindow;
-//     Display display;
-//
-//     /**
-//      * Set basic environment of installing page.
-//      * @param parent
-//      * @param style
-//      */
-//     public InstallingPage(Composite parent, int style) {
-//             super(parent, style, true);
-//
-//             setLeftImageFromResource(RSC_PATH_IMAGE);
-//             setTitle(STRING_TITLE);
-//             setSubTitle(STRING_SUBTITLE);
-//
-//             progressBar = new ProgressBar(customComposite, SWT.NONE);
-//             progressBar.setBounds(30, 110, 406, 20);
-//
-//             statusLabel = new Label(customComposite, SWT.NONE);
-//             statusLabel.setBounds(30, 65, 340, 23);
-//             statusLabel.setBackground(InstallManagerWindow.getBackgroundColor());
-//
-//             mSubTitleOfProgress = new Label(customComposite, SWT.NONE);
-//             mSubTitleOfProgress.setBounds(30, 138, 260, 23);
-//             mSubTitleOfProgress.setForeground(new Color(null, 96, 96, 96));
-//             mSubTitleOfProgress
-//                             .setBackground(InstallManagerWindow.getBackgroundColor());
-//             mSubTitleOfProgress.setText("");
-//
-//             installedNumberLabel = new Label(customComposite, SWT.NONE);
-//             installedNumberLabel.setAlignment(SWT.RIGHT);
-//             installedNumberLabel.setBounds(275, 90, 160, 23);
-//             installedNumberLabel.setForeground(new Color(null, 0, 108, 209));
-//             installedNumberLabel
-//                             .setBackground(InstallManagerWindow.getBackgroundColor());
-//             installedNumberLabel.setText("");
-//
-//             mDownloadVelocity = new Label(customComposite, SWT.NONE);
-//             mDownloadVelocity.setAlignment(SWT.RIGHT);
-//             mDownloadVelocity.setBounds(295, 138, 140, 23);
-//             mDownloadVelocity.setBackground(InstallManagerWindow.getBackgroundColor());
-//             mDownloadVelocity.setForeground(new Color(null, 0, 108, 209));
-//             mDownloadVelocity.setText("");
-//     }
-//
-//     /**
-//      * First of all this function check package whether update or not and check install path(target directory)
-//      * is empty. 
-//      * @param selectedList
-//      * @param viewController
-//      * @param installPath
-//      * @param mainWindow
-//      * @param isUpdate
-//      * @return true is success to install<br>false is fail to install
-//      */
-//     public boolean loadPage(List<String> selectedList,
-//                     ViewController viewController, String installPath,
-//                     InstallManagerWindow mainWindow, boolean isUpdate) {
-//             this.selectedList = selectedList;
-//             this.viewController = viewController;
-//             this.installPath = installPath;
-//             this.mainWindow = mainWindow;
-//             monitor = new InstallProgressMonitor();
-//             display = customComposite.getDisplay();
-//
-//             if (isUpdate == true) {
-//                     ProgramController controller = ProgramController
-//                                     .createProgramController();
-//                     
-//                     if (controller.runningProgramExists()) {
-//                             int confirm = MessageBoxDlg
-//                                             .showDlg(
-//                                                             getShell(),
-//                                                             "Warning",
-//                                                             "The SDK is already running. If you update it, the current version will stop. Are you sure you want to update the SDK?",
-//                                                             DialogType.WARNING, false);
-//                             if (confirm == MessageBoxDlg.YES) {
-//                                     controller.terminateRunningProgram();
-//                             } else if (confirm == MessageBoxDlg.NO) {
-//                                     return false;
-//                             }
-//                     }
-//             } 
-//             
-//             new InstallThread(monitor).start();
-//
-//             return true;
-//     }
-//
-//     /**
-//      * This class controls process to install.
-//      * @author Shihyun Kim <shihyun.kim@samsung.com>
-//      */
-//     class InstallThread extends Thread {
-//
-//             private InstallProgressMonitor monitor;
-//
-//             public InstallThread(InstallProgressMonitor monitor) {
-//                     this.monitor = monitor;
-//             }
-//
-//             /**
-//              * Installing thread run
-//              */
-//             @Override
-//             public void run() {
-//                     boolean bResult = false;
-//                     try {
-//                             bResult = installProcess(monitor);
-//                             ErrorController.setInstallationSuccess(bResult);
-//                     } catch (IMFatalException e) {
-//                             Log.err("internal error occurred");
-//                             Log.ExceptionLog(e);
-//                             ErrorController.setInstallationSuccess(false);
-//                     } catch (Exception e) {
-//                             Log.err("Unexpected exception occurred");
-//                             Log.ExceptionLog(e);
-//                             ErrorController.setInstallationSuccess(false);
-//                     } finally {
-//                             monitor.done();
-//                     }
-//                     Log.log("finish install thread");
-//             }
-//     }
-//
-//     /**
-//      * After set selected package list and install path, start to install.
-//      * @param monitor
-//      * @throws IMExitException 
-//      */
-//     public boolean installProcess(InstallProgressMonitor monitor) throws IMExitException {
-//             boolean bResult = false;
-//
-//             try {
-//                     bResult = viewController.install(selectedList, installPath, monitor);
-////                   ErrorController.setError(ErrorCode.INSTALLATION_FAIL);
-//             } catch (IMInstallCancelException e) {
-//                     bResult = false;
-//                     ErrorController.setError(ErrorCode.INSTALL_CANCELED);
-//                     Log.log("Installation canceled");
-//                     
-//                     return false;
-//             }
-//             
-//             return bResult;
-//     }
-//
-//     /**
-//      * Get install progress monitor object
-//      * @return install progress monitor object
-//      */
-//     public InstallProgressMonitor getInstallProgressMonitor() {
-//             return monitor;
-//     }
-//
-//     /**
-//      * @author Shihyun Kim <shihyun.kim@samsung.com>
-//      */
-//     public class InstallProgressMonitor implements IIMProgressMonitor {
-//
-//             private long totalWork;
-//             private double mProgressSize = 0;
-//             private String mProgressTitle;
-//             private String mSubTitle;
-//             private String status;
-//             private long downloadStartTime = 0;
-//             private boolean isCanceled = false;
-//
-//             private static final int MAX_LENGTH = 40;
-//             private static final String STRING_ETC = "...";
-//             private boolean cancelRequested;
-//
-//             /**
-//              * Set start time to download.
-//              */
-//             public void setDownloadStartTime(long startTime) {
-//                     this.downloadStartTime = startTime;
-//             }
-//
-//             @Override
-//             public void beginTask(String name, int totalWork) {
-//                     if (display == null || display.isDisposed()) {
-//                             setCanceled(true);
-//                             return;
-//                     }
-//                     this.totalWork = totalWork;
-//                     this.status = name;
-//                     display.asyncExec(new Runnable() {
-//                             @Override
-//                             public void run() {
-//                                     statusLabel.setText(status);
-//                                     downloadStartTime = System.currentTimeMillis();
-//                             }
-//                     });
-//             }
-//
-//             private boolean retContinue = false;
-//
-//             /**
-//              * Check cancel button
-//              * @return
-//              * true : user press a cancel button
-//              * false : user do nothing
-//              */
-//             public boolean checkCancelAndDisableCancelButton() {
-//                     retContinue = false;
-//                     if (display == null || display.isDisposed()) {
-//                             setCanceled(true);
-//                             return false;
-//                     }
-//                     display.syncExec(new Runnable() {
-//                             @Override
-//                             public void run() {
-//                                     if (!cancelRequested) {
-//                                             mainWindow.setCancelBtnEnabled(false);
-//                                             mDownloadVelocity.setVisible(false);
-//                                             mSubTitleOfProgress.setBounds(30, 138, 360, 23);
-//                                             retContinue = true;
-//                                     }
-//                             }
-//                     });
-//                     return retContinue;
-//             }
-//
-//             /**
-//              * Control to finish install process
-//              */
-//             @Override
-//             public void done() {
-//                     if (display == null || display.isDisposed()) {
-//                             setCanceled(true);
-//                             return;
-//                     }
-//                     
-//                     if (Config.status == Config.Status.INSTALL) {
-//                             Registry.saveSDKInfo(installPath);
-//                     }
-//
-//                     display.asyncExec(new Runnable() {
-//                             @Override
-//                             public void run() {
-//                                     progressBar.setSelection(100);
-//                                     
-//                                     CompletePage completePage = mainWindow.getCompletePage();
-//                                     
-//                                     if (ErrorController.checkInstallationSuccess()) {
-//                                             completePage.setTitle("Installation Completed");
-//
-//                                             String customMessage = "";
-//                                             
-//                                             if (Platform.isUbuntu()) {
-//                                                     if (viewController.isUnityEnvironment()) {
-//                                                             customMessage = "Thank you for installing the Tizen SDK. \n\n" + 
-//                                                                         "To use the SDK, search and select 'Tizen IDE' on your unity dash. ";
-//                                                     } else {
-//                                                             customMessage = "Thank you for installing the Tizen SDK. \n\n" + 
-//                                                                 "To use the SDK, go to Application > Tizen SDK > Tizen IDE. ";
-//                                                     }
-//                                             } else if (Platform.isWindows()) {
-//                                                     customMessage = "Thank you for installing the Tizen SDK. " +
-//                                                                      "To use the SDK, go to Start > All Programs > Tizen SDK > Tizen IDE. \n\n";
-//                                             } else {
-//                                                     customMessage = "Thank you for installing the Tizen SDK. ";
-//                                             }
-//                                             
-//                                             completePage.setCustomMessage(customMessage);
-//                                             completePage.setErrorTextMsg();
-//                                             
-////                                           if (ErrorController.existInfoMessage()) {
-//                                                     completePage.setInfoMessage(InfoCode.RESTART_THE_COMPUTER.getInfoMessage()/*ErrorController.getInfoMessage()*/);
-////                                           }
-//                                             
-//                                             Log.log("installation complete");
-//                                     } else {
-//                                             Log.log("(un)installation failed");
-//                                             completePage.setTitle("(Un)Installation failed");
-//                                             completePage.setCustomErrorMessage(ErrorController.getErrorMessage() + "\n");
-//                                             mainWindow.getCompletePage().showCheckButton(false);
-//                                     }
-//
-//                                     mainWindow.setNameOfCancelButton("Close");
-//                                     mainWindow.setCancelBtnEnabled(true);
-//                                     mainWindow.showComposite(completePage);
-//                             }
-//                     });
-//             }
-//
-//             @Override
-//             public void internalWorked(double work) {
-//                     // Do nothing.
-//             }
-//
-//             @Override
-//             public boolean isCanceled() {
-//                     return isCanceled;
-//             }
-//
-//             @Override
-//             public void setCanceled(boolean value) {
-//                     isCanceled = value;
-//             }
-//
-//             @Override
-//             public void setTaskName(String name) {
-//                     // Do nothing.
-//             }
-//
-//             @Override
-//             public void subTask(String name) {
-//                     // Do nothing.
-//             }
-//
-//             /**
-//              * set working package name to show during installing
-//              */
-//             @Override
-//             public void worked(final int work) {
-//                     if (display == null || display.isDisposed()) {
-//                             setCanceled(true);
-//                             return;
-//                     }
-//                     display.syncExec(new Runnable() {
-//                             @Override
-//                             public void run() {
-//                                     installedNumberLabel.setText(work + "/" + (totalWork));
-//                                     progressBar.setSelection(100 * work / (int) totalWork);
-//                             }
-//                     });
-//             }
-//             
-//             /**
-//              * set working file name to show during installing 
-//              */
-//             @Override
-//             public void workedTitle(String title) {
-//                     mProgressTitle = title;
-//                     
-//                     if (display == null || display.isDisposed()) {
-//                             setCanceled(true);
-//                             return;
-//                     }
-//                     
-//                     display.syncExec(new Runnable() {
-//                             @Override
-//                             public void run() {
-//                                     statusLabel.setText(mProgressTitle);
-//                             }
-//                     });
-//             }
-//
-//             /**
-//              * set working file name to show during installing 
-//              */
-//             @Override
-//             public void workedSubTitle(String subTitle) {
-//                     if (subTitle.length() > MAX_LENGTH) {
-//                             mSubTitle = subTitle.substring(0, MAX_LENGTH - 2);
-//                             mSubTitle = mSubTitle + STRING_ETC;
-//                     } else {
-//                             mSubTitle = subTitle;
-//                     }
-//                     
-//                     if (display == null || display.isDisposed()) {
-//                             setCanceled(true);
-//                             return;
-//                     }
-//                     
-//                     display.syncExec(new Runnable() {
-//                             @Override
-//                             public void run() {
-//                                     mSubTitleOfProgress.setText(mSubTitle);
-//                             }
-//                     });
-//             }
-//             
-//             @Override
-//             public void workedProcess(String title) {
-//                     if (title == null || title.isEmpty()) {
-//                             return;
-//                     }
-//                     
-//                     String processTitle = "Processing : package \"" + title + "\"";
-//                     workedTitle(processTitle);
-//             }
-//             
-//             @Override
-//             public void workedDownload(String title) {
-//                     if (title == null || title.isEmpty()) {
-//                             return;
-//                     }
-//                     
-//                     workedTitle("Downloading : " + title);
-//             }
-//             
-//             @Override
-//             public void workedChecksum(String title) {
-//                     if (title == null || title.isEmpty()) {
-//                             return;
-//                     }
-//                     
-//                     workedTitle("File checking : " + title);
-//             }
-//
-//             /**
-//              * check validation of download
-//              */
-//             public void workedChecksum(final long size) {
-//                     if (display == null || display.isDisposed()) {
-//                             setCanceled(true);
-//                             return;
-//                     }
-//                     display.asyncExec(new Runnable() {
-//                             private String pattern = ".##";
-//                             private DecimalFormat dformat = new DecimalFormat(pattern);
-//
-//                             public void run() {
-//                                     /* set total size */
-//                                     mProgressSize += size / (double) 1024;
-//                                     if (totalWork >= GB_SIZE) {
-//                                             totalSize = dformat.format((totalWork / GB_SIZE)) + "GB";
-//                                     } else if (totalWork >= MB_SIZE) {
-//                                             totalSize = dformat.format((totalWork / MB_SIZE)) + "MB";
-//                                     } else {
-//                                             totalSize = totalWork + "KB";
-//                                     }
-//
-//                                     /* set current download size */
-//                                     if (mProgressSize >= GB_SIZE) {
-//                                             currentSize = dformat.format((mProgressSize / GB_SIZE)) + "GB";
-//                                     } else if (mProgressSize >= MB_SIZE) {
-//                                             currentSize = dformat.format((mProgressSize / MB_SIZE)) + "MB";
-//                                     } else {
-//                                             currentSize = dformat.format(mProgressSize) + "KB";
-//                                     }
-//                                     
-//                                     installedNumberLabel.setText(currentSize + "/" + totalSize);
-//                                     mSubTitleOfProgress.setText("");
-//                                     mDownloadVelocity.setText("");
-//                                     progressBar.setSelection((int) (100 * mProgressSize / totalWork));
-//
-//                             }
-//                     });
-//             }
-//
-//             /**
-//              * Control download and show download information.
-//              */
-//             @Override
-//             public void workedDownload(final long size) {
-//                     if (display == null || display.isDisposed()) {
-//                             setCanceled(true);
-//                             return;
-//                     }
-//                     display.asyncExec(new Runnable() {
-//                             private String pattern = ".00";
-//                             private DecimalFormat dformat = new DecimalFormat(pattern);
-//                             private String remainTimeStr = "";
-//                             private String downloadVelocityStr = "";
-//
-//                             @Override
-//                             public void run() {
-//                                     /* set total size */
-//                                     mProgressSize += size / (double) 1024;
-//                                     if (totalWork >= GB_SIZE) {
-//                                             totalSize = dformat.format((totalWork / GB_SIZE)) + "GB";
-//                                     } else if (totalWork >= MB_SIZE) {
-//                                             totalSize = dformat.format((totalWork / MB_SIZE)) + "MB";
-//                                     } else {
-//                                             totalSize = totalWork + "KB";
-//                                     }
-//
-//                                     /* set current download size */
-//                                     if (mProgressSize >= GB_SIZE) {
-//                                             currentSize = dformat.format((mProgressSize / GB_SIZE)) + "GB";
-//                                     } else if (mProgressSize >= MB_SIZE) {
-//                                             currentSize = dformat.format((mProgressSize / MB_SIZE)) + "MB";
-//                                     } else {
-//                                             currentSize = dformat.format(mProgressSize) + "KB";
-//                                     }
-//
-//                                     long pastTimes = System.currentTimeMillis()
-//                                                     - downloadStartTime;
-//
-//                                     /* set download velocity */
-//
-//                                     double downloadVelocity = 0;
-//
-//                                     if (pastTimes > 5000) {
-//                                             downloadVelocity = mProgressSize / (double) (pastTimes / (double) 1000);
-//                                             
-//                                             if (downloadVelocity >= GB_SIZE)  {
-//                                                     downloadVelocityStr = dformat.format(downloadVelocity / GB_SIZE) + "GB/s";
-//                                             } else if (downloadVelocity >= MB_SIZE) {
-//                                                     downloadVelocityStr = dformat.format(downloadVelocity / MB_SIZE) + "MB/s";
-//                                             } else {
-//                                                     downloadVelocityStr = dformat.format(downloadVelocity / KB_SIZE) + "KB/s";
-//                                             }
-//                                     }
-//                                     /* set remain time */
-//                                     double remainTime = 0;
-//                                     if (downloadVelocity == 0) {
-//                                             remainTimeStr = "estimating...";
-//                                     } else {
-//                                             double remainSize = totalWork - mProgressSize;
-//                                             remainTime = remainSize / downloadVelocity;
-//                                             
-//                                             int day = (int) (remainTime / DAY);
-//                                             int hour = (int) ((remainTime % DAY) / HOUR);
-//                                             int min = (int) ((remainTime % HOUR) / MIN);
-//                                             int sec = (int) (remainTime % MIN);
-//
-//                                             if (day > 0) {
-//                                                     remainTimeStr = day + "day ";
-//                                             }
-//                                             
-//                                             if (hour > 0) {
-//                                                     remainTimeStr += hour + "hour ";
-//                                             }
-//                                             
-//                                             if (min > 0) {
-//                                                     remainTimeStr += min + "min ";
-//                                             }
-//                                             
-//                                             if (sec > 0) {
-//                                                     remainTimeStr += sec + "sec";
-//                                             }
-//                                     }
-//
-//                                     installedNumberLabel.setText(currentSize + "/" + totalSize);
-//                                     mSubTitleOfProgress.setText("Remaining time : " + remainTimeStr);
-//                                     mDownloadVelocity.setText(downloadVelocityStr);
-//                                     progressBar.setSelection((int) (100 * mProgressSize / totalWork));
-//                             }
-//                     });
-//             }
-//
-//
-//             /**
-//              * Show percentage for progress bar
-//              */
-//             @Override
-//             public void workedProgressbar(final int percent) {
-//                     if (display == null || display.isDisposed()) {
-//                             setCanceled(true);
-//                             return;
-//                     }
-//                     display.asyncExec(new Runnable() {
-//                             @Override
-//                             public void run() {
-//                                     progressBar.setSelection(percent);
-//                             }
-//                     });
-//             }
-//
-//             public void setCancelRequested(boolean b) {
-//                     cancelRequested = b;
-//             }
-//
-//             @Override
-//             public void workedRefresh() {
-//                     mProgressSize = 0;
-//             }
-//             
-//             @Override
-//             public void setError(int errorCode) {
-//                     // TODO Auto-generated method stub
-//                     
-//             }
-//     }
-//}
-//>>>>>>> Stashed changes
index 0c8a5f2..84b0bea 100644 (file)
@@ -57,6 +57,7 @@ import org.eclipse.swt.widgets.TreeColumn;
 import org.eclipse.swt.widgets.TreeItem;
 import org.tizen.installmanager.core.Config;
 import org.tizen.installmanager.lib.Platform;
+import org.tizen.installmanager.pkg.lib.PackageManager;
 import org.tizen.installmanager.pkg.model.Package;
 import org.tizen.installmanager.pkg.model.PackageSet;
 import org.tizen.installmanager.ui.InstallManagerWindow;
@@ -174,7 +175,7 @@ public abstract class PackageListPage extends PageTemplate {
                
                TreeColumn trclmnC = new TreeColumn(tree, SWT.CENTER);
                trclmnC.setWidth(70);
-               trclmnC.setText("Install size");
+               trclmnC.setText("Install size");                        
        }
        
        private void setCheckboxTreeViewer(final Type type) {
@@ -187,6 +188,7 @@ public abstract class PackageListPage extends PageTemplate {
                checkboxTreeViewer.setContentProvider(new ItemTreeContentProvider());
                checkboxTreeViewer.setLabelProvider(new ItemLabelProvider());
 
+               List<Item> tmp = getItems();
                checkboxTreeViewer.setInput(getItems());
 
                checkboxTreeViewer.addCheckStateListener(new ICheckStateListener() {
@@ -485,7 +487,11 @@ public abstract class PackageListPage extends PageTemplate {
        }
 
        private void setCheckState(Item selectedItem, boolean checked) {
-               if (selectedItem.getInstallState() == InstallState.INSTALL) {
+               if (Config.status == Config.Status.UPDATE) {
+                       if (selectedItem.getInstallState() == InstallState.INSTALL) {
+                               selectedItem.setCheckState(checked);                            
+                       }
+               } else {
                        selectedItem.setCheckState(checked);
                }
        }
@@ -538,17 +544,52 @@ public abstract class PackageListPage extends PageTemplate {
 
        abstract public boolean loadPage(ViewController controller);
 
-       protected void loadPackagesToTreeViewer(PackageSet packageSet) {
+       protected void loadPackagesToTreeViewer(PackageSet packageSet, Type type) {
                //make tree items from package set.
-               List<Item> treeItems = viewController.getPackageSetOfTree();
-               
-               items.addAll(treeItems);
+               List<Item> treeItems = new ArrayList<Item>();
+               List<Item> treeIts;
+               if (type != Type.UNINSTALL) {
+                       treeItems = viewController.getPackageSetOfTree();
+
+                       items.addAll(treeItems);
+                       // make relation for item tree.
+                       makeRelation(items);
+               } else {
+                       treeIts = viewController.getPackageSetOfTree();
+                       treeItems = getRemovableSetOfTree(treeIts);
+                       items.addAll(treeItems);
+               }
                
-               // make relation for item tree.
-               makeRelation(items);
+//             items.addAll(treeItems);
+//             
+////           make relation for item tree.
+//             makeRelation(items);
                makeState();
        }
        
+       public List<Item> getRemovableSetOfTree(List<Item> treeItemSet) {
+               makeRelation(treeItemSet);
+               List<Item> treeItems = new ArrayList<Item>();
+               
+               for (Item item : treeItemSet) {
+                       if (item.hasChildren()) {
+                               treeItems.addAll(getRemovableSetOfTree(item.getChildren()));
+                       } else {
+                               if (item.getInstallState() == InstallState.UNINSTALL) {
+                                       if (!treeItems.contains(item)) {
+                                               treeItems.add(item);                                            
+                                       }
+                                       
+                                       if (item.getParent() != null && !treeItems.contains(item.getParent())) {
+                                               treeItems.add(item.getParent());
+                                       }
+                               }
+                       }
+               }
+               
+               return treeItems;
+       }
+       
        public void addExtensionPackagesToExtra(PackageSet packageSet) {
                Item extraItem = getExtraTreeItem();
                if (extraItem == null) {
@@ -708,10 +749,40 @@ public abstract class PackageListPage extends PageTemplate {
         */
        public int getCheckedPackageNumber() {
                int result = 0;
-               if (checkboxTreeViewer != null) {
-                       Object[] items = checkboxTreeViewer.getCheckedElements();
+               int leafCnt = 0;
+               int installedCnt = 0;
+               
+               Object[] items = checkboxTreeViewer.getCheckedElements();
+               
+               if (Config.status == Config.Status.UPDATE) {
+                       if (checkboxTreeViewer != null) {
+                               List<Item> itemList = new ArrayList<Item>();                    
+                               for (Object o : items) {
+                                       itemList.add((Item)o);
+                               }
+
+                               // Count checked node items.
+                               for (Item i : itemList) {
+                                       if (i.getParent() != null) { // it means leaf node.
+                                               leafCnt ++;
+                                       } else if (!i.hasChildren()) { // it means top node which does not have children.
+                                               leafCnt ++;
+                                       }
+                               }
+                               
+                               // Count installed items among checked items.
+                               for (Item i : itemList) {
+                                       if (i.getInstallState() == InstallState.UNINSTALL) {
+                                               installedCnt++;
+                                       }
+                               }
+                               
+                               result = leafCnt - installedCnt;
+                       }                       
+               } else {
                        result = items.length;
                }
+
                return result;
        }
 
index 1fdf540..a3c9b01 100644 (file)
@@ -99,15 +99,15 @@ public class PageTemplate extends Composite {
 //                     customComposite.setSize(468, 304);
 //                     customComposite.setLocation(160, 90);
                        customComposite.setBounds(0, 108, 628, 297);
-//                     customComposite.setBackground(InstallManagerWindow.getBackgroundColor());
-                       customComposite.setBackground(new Color(null, new RGB(100, 100, 100)));
+                       customComposite.setBackground(InstallManagerWindow.getBackgroundColor());
+//                     customComposite.setBackground(new Color(null, new RGB(100, 100, 100)));
                } else {
                        customComposite = new Composite(this, SWT.NONE);
                        
                        customComposite.setSize(468, 304);
                        customComposite.setLocation(160, 90);
-//                     customComposite.setBackground(InstallManagerWindow.getBackgroundColor());
-                       customComposite.setBackground(new Color(null, new RGB(100, 100, 100)));
+                       customComposite.setBackground(InstallManagerWindow.getBackgroundColor());
+//                     customComposite.setBackground(new Color(null, new RGB(100, 100, 100)));
                }
        }
 
index a84f7a4..5313b01 100644 (file)
@@ -49,6 +49,7 @@ import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.DirectoryDialog;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Label;
 import org.tizen.installmanager.core.Config;
 import org.tizen.installmanager.core.IMFatalException;
@@ -172,7 +173,8 @@ public class SetInstallDirectoryPage extends InstallPage {
                        @Override
                        public void widgetSelected(SelectionEvent e) {
                                System.out.println("Start installing");
-//                             mainWindow.getNextButton().notifyListeners(SWT.Selection, new Event());
+                               InstallManagerWindow mainWindow = InstallManagerWindow.getInstallManagerWindow();
+                               mainWindow.getNextButton().notifyListeners(SWT.Selection, new Event());
                        }
                });
        }
index 1c6255b..7926b8f 100644 (file)
@@ -35,6 +35,9 @@ import org.eclipse.jface.viewers.CheckStateChangedEvent;
 import org.eclipse.jface.viewers.ICheckStateListener;
 import org.eclipse.swt.widgets.Composite;
 import org.tizen.installmanager.ui.model.Item;
+import org.tizen.installmanager.pkg.lib.PackageManager;
+import org.tizen.installmanager.pkg.model.Package;
+import org.tizen.installmanager.pkg.model.PackageSet;
 
 
 /**
@@ -42,8 +45,9 @@ import org.tizen.installmanager.ui.model.Item;
  * @author Taeyoung Son <taeyoung2.son@samsung.com>
  */
 public class UninstallableListPage extends PackageListPage {
+       private static final String RSC_PATH_IMAGE_NEW = RESOURCE_PATH_NEW + "/02_installation_option_bg.png";
        static final String RSC_PATH_IMAGE = RESOURCE_PATH + "/uninstaller_graphicmotif_001.png";
-       static final String STRING_TITLE = "Uninstall Items";
+       static final String STRING_TITLE = "Select uninstall components";
        static final String STRING_SUBTITLE = "You can see the items to uninstall.";
 
        /**
@@ -55,9 +59,14 @@ public class UninstallableListPage extends PackageListPage {
        public UninstallableListPage(Composite parent, int style) {
                super(parent, style, Type.UNINSTALL);
 
-               setLeftImageFromResource(RSC_PATH_IMAGE);
-               setTitle(STRING_TITLE);
-               setSubTitle(STRING_SUBTITLE);
+               setLeftImageFromResource(RSC_PATH_IMAGE_NEW);
+//             setTitle(STRING_TITLE);
+//             setSubTitle(STRING_SUBTITLE);
+               
+               disableTitleBounds();
+               disableSubtitleBounds();
+
+               setTitleLabelText(STRING_TITLE);
 
                checkboxTreeViewer.addCheckStateListener(new ICheckStateListener() {
                        @Override
@@ -124,7 +133,19 @@ public class UninstallableListPage extends PackageListPage {
                this.viewController = controller;
                getItems().clear();
 
-               loadPackagesToTreeViewer(viewController.getRemovableMetaPackageList());
+               PackageSet removablePkgs = viewController.getRemovableMetaPackageList();
+               PackageSet ps2 = PackageManager.getInstance().getRootMetaPackagesOfRepository();
+               PackageSet ps1 = viewController.getInstalledPackages();
+               PackageSet ps = PackageManager.getInstance().getInstalledMetaPackages();
+               for (Package p : viewController.getRemovableMetaPackageList()) {
+                       if (p.getAttribute().equalsIgnoreCase("extra")) {
+                               removablePkgs.remove(p);
+                       }
+               }
+               loadPackagesToTreeViewer(removablePkgs, Type.UNINSTALL);
+               
+//             viewController.loadSdkExtension();
+//             addExtensionPackagesToExtra(viewController.getRootMetaPackageListOfExtension());
 
                if (getItems().size() <= 0) {
                        setUninstallAll();
@@ -140,8 +161,9 @@ public class UninstallableListPage extends PackageListPage {
         * Change column in uninstallable list page.
         */
        protected void setUninstallColumn() {
+               tree.getColumn(0).setWidth(350);
                tree.getColumn(1).setText("Status");
-//             tree.getColumn(1).setWidth(0);
+               tree.getColumn(2).setWidth(0);
 //             tree.getColumn(2).setText("Installed version");
 //             tree.getColumn(3).setWidth(0);
        }
index 666ff20..b5d4db0 100644 (file)
@@ -47,22 +47,25 @@ import org.tizen.installmanager.pkg.model.PackageSet;
 import org.tizen.installmanager.ui.InstallManagerWindow;\r
 import org.tizen.installmanager.ui.dialog.MessageBoxDlg;\r
 import org.tizen.installmanager.ui.dialog.MessageBoxDlg.DialogType;\r
+import org.tizen.installmanager.ui.lib.IMCircularGraph;\r
+import org.tizen.installmanager.ui.page.InstallPage.CIRCULAR_TYPE;\r
 import org.tizen.installmanager.pkg.model.Package;\r
 \r
 /**\r
  * @author Taeyoung Son <taeyoung2.son@samsung.com>\r
  * @author Shihyun Kim <shihyun.kim@samsung.com>\r
  */\r
-public class UninstallingPage extends PageTemplate {\r
+public class UninstallingPage extends InstallPage {\r
        static final String RSC_PATH_IMAGE = RESOURCE_PATH + "/uninstaller_graphicmotif_002.png";\r
        static final String STRING_TITLE = "Uninstalling...";\r
        static final String STRING_SUBTITLE = "";\r
 \r
+       private Label unInstallFileNameLabel;\r
 \r
-       private ProgressBar progressBar;\r
-       private Label statusLabel;\r
-       private Label uninstalledNumberLabel;\r
-       private Label mSubTitleOfProgress;\r
+//     private ProgressBar progressBar;\r
+//     private Label statusLabel;\r
+//     private Label uninstalledNumberLabel;\r
+//     private Label mSubTitleOfProgress;\r
 \r
        private ViewController viewController;\r
        private UninstallProgressMonitor monitor;\r
@@ -76,27 +79,41 @@ public class UninstallingPage extends PageTemplate {
         */\r
        public UninstallingPage(Composite parent, int style) {\r
                super(parent, style, true);\r
-               setLeftImageFromResource(RSC_PATH_IMAGE);\r
-               setTitle(STRING_TITLE);\r
-               setSubTitle(STRING_SUBTITLE);\r
-\r
-               progressBar = new ProgressBar(customComposite, SWT.NONE);\r
-               progressBar.setBounds(40, 110, 396, 20);\r
-\r
-               statusLabel = new Label(customComposite, SWT.NONE);\r
-               statusLabel.setBounds(40, 80, 343, 23);\r
-               statusLabel.setForeground(new Color(null, 96, 96, 96));\r
-               statusLabel.setBackground(InstallManagerWindow.getBackgroundColor());\r
-\r
-               mSubTitleOfProgress = new Label(customComposite, SWT.NONE);\r
-               mSubTitleOfProgress.setBounds(40, 138, 250, 23);\r
-               mSubTitleOfProgress.setBackground(InstallManagerWindow.getBackgroundColor());\r
-               mSubTitleOfProgress.setText("");\r
-\r
-               uninstalledNumberLabel = new Label(customComposite, SWT.CENTER);\r
-               uninstalledNumberLabel.setBounds(353, 138, 80, 23);\r
-               uninstalledNumberLabel.setBackground(InstallManagerWindow.getBackgroundColor());\r
-               uninstalledNumberLabel.setText("");\r
+               disableTitleBounds();\r
+               disableSubtitleBounds();\r
+               \r
+               setTitleLabelText(STRING_TITLE);\r
+               setProgressCircle(customComposite, CIRCULAR_TYPE.PERCENTAGE);\r
+\r
+//             progressBar = new ProgressBar(customComposite, SWT.NONE);\r
+//             progressBar.setBounds(40, 110, 396, 20);\r
+\r
+//             statusLabel = new Label(customComposite, SWT.NONE);\r
+//             statusLabel.setBounds(40, 80, 343, 23);\r
+//             statusLabel.setForeground(new Color(null, 96, 96, 96));\r
+//             statusLabel.setBackground(InstallManagerWindow.getBackgroundColor());\r
+//             statusLabel.setBackground(new Color(null, 96, 96, 96));\r
+\r
+//             mSubTitleOfProgress = new Label(customComposite, SWT.NONE);\r
+//             mSubTitleOfProgress.setBounds(40, 138, 250, 23);\r
+//             mSubTitleOfProgress.setBackground(InstallManagerWindow.getBackgroundColor());\r
+//             mSubTitleOfProgress.setBackground(new Color(null, 196, 196, 96));\r
+//             mSubTitleOfProgress.setText("");\r
+\r
+//             uninstalledNumberLabel = new Label(customComposite, SWT.CENTER);\r
+//             uninstalledNumberLabel.setBounds(353, 138, 80, 23);\r
+//             uninstalledNumberLabel.setBackground(InstallManagerWindow.getBackgroundColor());\r
+//             uninstalledNumberLabel.setText("");\r
+               setInstallFileNameLabel();\r
+       }\r
+       \r
+       private void setInstallFileNameLabel() {\r
+               unInstallFileNameLabel = new Label(customComposite, SWT.NONE);\r
+               unInstallFileNameLabel.setAlignment(SWT.CENTER);\r
+               unInstallFileNameLabel.setBounds(0, 189, 628, 20);\r
+               unInstallFileNameLabel.setForeground(new Color(null, 96, 96, 96));\r
+               unInstallFileNameLabel.setBackground(InstallManagerWindow.getBackgroundColor());\r
+               unInstallFileNameLabel.setText("uninstall file name");\r
        }\r
 \r
        /**\r
@@ -202,6 +219,8 @@ public class UninstallingPage extends PageTemplate {
 \r
                private static final int MAX_LENGTH = 40;\r
                private static final String STRING_ETC = "...";\r
+               \r
+               private IMCircularGraph circularGraph = getCircularGraph();\r
 \r
                @Override\r
                public void beginTask(final String name, int totalWork) {\r
@@ -211,7 +230,7 @@ public class UninstallingPage extends PageTemplate {
 \r
                                @Override\r
                                public void run() {\r
-                                       statusLabel.setText(name);\r
+                                       unInstallFileNameLabel.setText(name);\r
                                }\r
                        });\r
                }\r
@@ -224,31 +243,34 @@ public class UninstallingPage extends PageTemplate {
                        display.asyncExec(new Runnable() {\r
                                @Override\r
                                public void run() {\r
-                                       progressBar.setSelection(100);\r
+                                       circularGraph.update(100);\r
 \r
                                        CompletePage completePage = mainWindow.getCompletePage();\r
-                                       completePage.setLeftImageFromResource(CompletePage.RSC_PATH_UNINSTALL_IMAGE);\r
-                                       completePage.showCheckButton(false);\r
-                                       mainWindow.setCancelBtnEnabled(true);\r
-                                       mainWindow.showComposite(completePage);\r
+//                                     completePage.setLeftImageFromResource(CompletePage.RSC_PATH_IMAGE_NEW);\r
+                                       \r
 \r
                                        if (ErrorController.checkInstallationSuccess()) {\r
-                                               completePage.setTitle("Uninstallation Completed!");\r
+                                               completePage.setTitleLabelText("Uninstallation Completed!");\r
                                                if (!viewController.existRemovablePackage()) {\r
                                                        completePage.removeTargetDir();\r
                                                }\r
                                                \r
                                                String msg = "Thank you for using Tizen SDK. "; \r
-                                               completePage.setCustomMessage(msg);\r
+                                               completePage.setCustomMessage(msg, SWT.RIGHT);\r
                                                \r
                                                if (ErrorController.existInfoMessage()) {\r
-                                                       completePage.setInfoMessage(ErrorController.getInfoMessage());\r
+                                                       completePage.setInfoMessage(ErrorController.getInfoMessage(), SWT.RIGHT);\r
                                                }\r
                                        } else {\r
-                                               completePage.setTitle("Uninstallation Failed!");\r
+                                               completePage.setTitleLabelText("Uninstallation Failed!");\r
                                                completePage.setCustomErrorMessage("Sorry, Uninstallation was not success. Please try uninstall again.\n"\r
-                                                               + "Datail : " + ErrorController.getErrorMessage());\r
+                                                               + "Datail : " + ErrorController.getErrorMessage(), SWT.LEFT);\r
                                        }\r
+                                       \r
+                                       completePage.showCheckButton(false);\r
+                                       mainWindow.setNameOfCancelButton("Close");\r
+                                       mainWindow.setCancelBtnEnabled(true);\r
+                                       mainWindow.showComposite(completePage);\r
                                }\r
                        });\r
                }\r
@@ -286,9 +308,11 @@ public class UninstallingPage extends PageTemplate {
                        display.asyncExec(new Runnable() {\r
                                @Override\r
                                public void run() {\r
-                                       mSubTitleOfProgress.setText(mSubTitle);\r
-                                       uninstalledNumberLabel.setText(work + "/" + totalWork);\r
-                                       progressBar.setSelection(100 * work / totalWork);\r
+//                                     mSubTitleOfProgress.setText(mSubTitle);\r
+//                                     uninstalledNumberLabel.setText(work + "/" + totalWork);\r
+//                                     progressBar.setSelection(100 * work / totalWork);\r
+                                       int percentage = (int) (100 * work / totalWork);\r
+                                       circularGraph.update(percentage);\r
                                }\r
                        });\r
                }\r
@@ -308,7 +332,7 @@ public class UninstallingPage extends PageTemplate {
                        display.syncExec(new Runnable() {\r
                                @Override\r
                                public void run() {\r
-                                       statusLabel.setText(mProgressTitle);\r
+                                       unInstallFileNameLabel.setText("Uninstalling : " + mProgressTitle);\r
                                }\r
                        });\r
                }\r
@@ -333,7 +357,7 @@ public class UninstallingPage extends PageTemplate {
                        display.asyncExec(new Runnable() {\r
                                @Override\r
                                public void run() {\r
-                                       mSubTitleOfProgress.setText(mSubTitle);\r
+//                                     mSubTitleOfProgress.setText(mSubTitle);\r
                                }\r
                        });\r
                }\r
@@ -365,400 +389,23 @@ public class UninstallingPage extends PageTemplate {
                public void workedInstallSize(long size) {\r
                        //Do nothing\r
                }\r
+\r
+               @Override\r
+               public void revertDownloadSize(long size) {\r
+                       // TODO Auto-generated method stub\r
+                       \r
+               }\r
+\r
+               @Override\r
+               public void downloadDone() {\r
+                       // TODO Auto-generated method stub\r
+                       \r
+               }\r
+\r
+               @Override\r
+               public void installDone() {\r
+                       // TODO Auto-generated method stub\r
+                       \r
+               }\r
        }\r
 }\r
-//=======
-///*
-//*  InstallManager
-//*
-//* Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
-//*
-//* Contact: 
-//* Wooyoung Cho <wooyoung1.cho@samsung.com>
-//* Shihyun Kim <shihyun.kim@samsung.com>
-//* Taeyoung Son <taeyoung2.son@samsung.com>
-//* Yongsung kim <yongsung1.kim@samsung.com>
-//* 
-// * Licensed under the Apache License, Version 2.0 (the "License");
-//* you may not use this file except in compliance with the License.
-//* You may obtain a copy of the License at
-//*
-//* http://www.apache.org/licenses/LICENSE-2.0
-//*
-//* Unless required by applicable law or agreed to in writing, software
-//* distributed under the License is distributed on an "AS IS" BASIS,
-//* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//* See the License for the specific language governing permissions and
-//* limitations under the License.
-//*
-//* Contributors:
-//* - S-Core Co., Ltd
-//*
-//*/
-//
-//package org.tizen.installmanager.ui.page;
-//
-//import java.util.ArrayList;
-//import java.util.List;
-//
-//import org.eclipse.swt.SWT;
-//import org.eclipse.swt.graphics.Color;
-//import org.eclipse.swt.widgets.Composite;
-//import org.eclipse.swt.widgets.Display;
-//import org.eclipse.swt.widgets.Label;
-//import org.eclipse.swt.widgets.ProgressBar;
-//import org.tizen.installmanager.core.IMFatalException;
-//import org.tizen.installmanager.core.InstallManager;
-//import org.tizen.installmanager.lib.ErrorController;
-//import org.tizen.installmanager.lib.IIMProgressMonitor;
-//import org.tizen.installmanager.lib.Log;
-//import org.tizen.installmanager.lib.ProgramController;
-//import org.tizen.installmanager.pkg.model.PackageSet;
-//import org.tizen.installmanager.ui.InstallManagerWindow;
-//import org.tizen.installmanager.ui.dialog.MessageBoxDlg;
-//import org.tizen.installmanager.ui.dialog.MessageBoxDlg.DialogType;
-//import org.tizen.installmanager.pkg.model.Package;
-//
-///**
-// * @author Taeyoung Son <taeyoung2.son@samsung.com>
-// * @author Shihyun Kim <shihyun.kim@samsung.com>
-// */
-//public class UninstallingPage extends PageTemplate {
-//     static final String RSC_PATH_IMAGE = RESOURCE_PATH + "/uninstaller_graphicmotif_002.png";
-//     static final String STRING_TITLE = "Uninstalling...";
-//     static final String STRING_SUBTITLE = "";
-//
-//
-//     private ProgressBar progressBar;
-//     private Label statusLabel;
-//     private Label uninstalledNumberLabel;
-//     private Label mSubTitleOfProgress;
-//
-//     private ViewController viewController;
-//     private UninstallProgressMonitor monitor;
-//     private InstallManagerWindow mainWindow;
-//     Display display;
-//
-//     /**
-//      * Set basic environment of uninstalling page.
-//      * @param parent
-//      * @param style
-//      */
-//     public UninstallingPage(Composite parent, int style) {
-//             super(parent, style, true);
-//             setLeftImageFromResource(RSC_PATH_IMAGE);
-//             setTitle(STRING_TITLE);
-//             setSubTitle(STRING_SUBTITLE);
-//
-//             progressBar = new ProgressBar(customComposite, SWT.NONE);
-//             progressBar.setBounds(40, 110, 396, 20);
-//
-//             statusLabel = new Label(customComposite, SWT.NONE);
-//             statusLabel.setBounds(40, 80, 343, 23);
-//             statusLabel.setForeground(new Color(null, 96, 96, 96));
-//             statusLabel.setBackground(InstallManagerWindow.getBackgroundColor());
-//
-//             mSubTitleOfProgress = new Label(customComposite, SWT.NONE);
-//             mSubTitleOfProgress.setBounds(40, 138, 250, 23);
-//             mSubTitleOfProgress.setBackground(InstallManagerWindow.getBackgroundColor());
-//             mSubTitleOfProgress.setText("");
-//
-//             uninstalledNumberLabel = new Label(customComposite, SWT.CENTER);
-//             uninstalledNumberLabel.setBounds(353, 138, 80, 23);
-//             uninstalledNumberLabel.setBackground(InstallManagerWindow.getBackgroundColor());
-//             uninstalledNumberLabel.setText("");
-//     }
-//
-//     /**
-//      * Display uninstalling page, if sdk is running during uninstalling, page will show warning dialog.
-//      * @param selectedList
-//      * @param vController
-//      * @param mainWindow
-//      * @return
-//      */
-//     public boolean loadPage(
-//                     List<String> selectedList, ViewController vController,
-//                     InstallManagerWindow mainWindow) {
-//             this.viewController = vController;
-//             this.mainWindow = mainWindow;
-//             monitor = new UninstallProgressMonitor();
-//             display = customComposite.getDisplay();
-//
-//             //kill running process.
-//             ProgramController controller = ProgramController.createProgramController();
-//             if (controller.runningProgramExists()) {
-//                     int confirm = MessageBoxDlg.showDlg(
-//                                     getShell(),
-//                                     "Warning",
-//                                     "The SDK is already running. If you uninstall it, the current version will stop. Are you sure you want to uninstall the SDK?",
-//                                     DialogType.WARNING, false);
-//                     if (confirm == MessageBoxDlg.YES) {
-//                             controller.terminateRunningProgram();
-//                     } else if (confirm == MessageBoxDlg.NO) {
-//                             return false;
-//                     }
-//             }
-//             
-//             //start uninstall.
-//             final UninstallThread uninstallThread = new UninstallThread(monitor);
-//             uninstallThread.start();                
-//             
-//             return true;
-//     }
-//
-//     /**
-//      * This class controls process to uninstall.
-//      * @author Shihyun Kim <Shihyun.kim@samsung.com>
-//      */
-//     class UninstallThread extends Thread {
-//             private IIMProgressMonitor monitor;
-//
-//             public UninstallThread(IIMProgressMonitor monitor) {
-//                     this.monitor = monitor;
-//             }
-//
-//             /**
-//              * Uninstalling thread run
-//              */
-//             @Override
-//             public void run() {
-//                     try {
-//                             uninstallProcess(monitor);
-//                     } catch (IMFatalException e) {
-//                             Log.err("internal error occurred");
-//                             Log.ExceptionLog(e);
-//                             ErrorController.setInstallationSuccess(false);
-//                     } catch (Exception e) {
-//                             Log.err("Unexpected exception occurred");
-//                             Log.ExceptionLog(e);
-//                             ErrorController.setInstallationSuccess(false);
-//                     } finally {
-//                             monitor.done();
-//                     }
-//                     Log.log("finish uninstall thread");
-//             }
-//     }
-//
-//     /**
-//      * After check selected package list size, start to uninstall.
-//      * @param monitor
-//      */
-//     public void uninstallProcess(IIMProgressMonitor monitor) { boolean result = false;
-//             Log.log("****** Uninstall SDK ******");
-//             PackageSet pkgs = InstallManager.getInstance().getPackageManager().getInstalledPackages();
-//             List<String> installedList = new ArrayList<String>();
-//             for (Package pkg : pkgs) {
-//                     installedList.add(pkg.getPackageName());
-//             }
-//             
-//             if (installedList.size() <= 0) {
-//                     return;
-//             } else {
-//                     Log.log("Uninstalling SDK : " + viewController.getInstalledPath());
-//                     result = viewController.uninstall(installedList, monitor);
-//             }
-//
-//             ErrorController.setInstallationSuccess(result);
-//     }
-//
-//     /**
-//      * @author Shihyun Kim <shihyun.kim@samsung.com>
-//      */
-//     public class UninstallProgressMonitor implements IIMProgressMonitor {
-//
-//             private int totalWork;
-//             private String mProgressTitle = "";
-//             private String mSubTitle = "";
-//
-//             private static final int MAX_LENGTH = 40;
-//             private static final String STRING_ETC = "...";
-//
-//             @Override
-//             public void beginTask(final String name, int totalWork) {
-//                     this.mProgressTitle = name;
-//                     this.totalWork = totalWork;
-//                     display.asyncExec(new Runnable() {
-//
-//                             @Override
-//                             public void run() {
-//                                     statusLabel.setText(name);
-//                             }
-//                     });
-//             }
-//
-//             /**
-//              * Control to finish uninstall process
-//              */
-//             @Override
-//             public void done() {
-//                     display.asyncExec(new Runnable() {
-//                             @Override
-//                             public void run() {
-//                                     progressBar.setSelection(100);
-//
-//                                     CompletePage completePage = mainWindow.getCompletePage();
-//                                     completePage.setLeftImageFromResource(CompletePage.RSC_PATH_UNINSTALL_IMAGE);
-//                                     completePage.showCheckButton(false);
-//                                     mainWindow.setCancelBtnEnabled(true);
-//                                     mainWindow.showComposite(completePage);
-//
-//                                     if (ErrorController.checkInstallationSuccess()) {
-//                                             completePage.setTitle("Uninstallation Completed!");
-//                                             if (!viewController.existRemovablePackage()) {
-//                                                     completePage.removeTargetDir();
-//                                             }
-//                                             
-//                                             String msg = "Thank you for using Tizen SDK. "; 
-//                                             completePage.setCustomMessage(msg);
-//                                             
-//                                             if (ErrorController.existInfoMessage()) {
-//                                                     completePage.setInfoMessage(ErrorController.getInfoMessage());
-//                                             }
-//                                     } else {
-//                                             completePage.setTitle("Uninstallation Failed!");
-//                                             completePage.setCustomErrorMessage("Sorry, Uninstallation was not success. Please try uninstall again.\n"
-//                                                             + "Datail : " + ErrorController.getErrorMessage());
-//                                     }
-//                             }
-//                     });
-//             }
-//
-//             @Override
-//             public void internalWorked(double work) {
-//                     // Do nothing.
-//             }
-//
-//             @Override
-//             public boolean isCanceled() {
-//                     return false;
-//             }
-//
-//             @Override
-//             public void setCanceled(boolean value) {
-//                     // Do nothing.
-//             }
-//
-//             @Override
-//             public void setTaskName(String name) {
-//                     // Do nothing.
-//             }
-//
-//             @Override
-//             public void subTask(String name) {
-//                     // Do nothing.
-//             }
-//
-//             /**
-//              * set working package name to show during uninstalling
-//              */
-//             @Override
-//             public void worked(final int work) {
-//                     display.asyncExec(new Runnable() {
-//                             @Override
-//                             public void run() {
-//                                     mSubTitleOfProgress.setText(mSubTitle);
-//                                     uninstalledNumberLabel.setText(work + "/" + totalWork);
-//                                     progressBar.setSelection(100 * work / totalWork);
-//                             }
-//                     });
-//             }
-//             
-//             /**
-//              * set working file name to show during installing 
-//              */
-//             @Override
-//             public void workedTitle(String title) {
-//                     mProgressTitle = title;
-//                     
-//                     if (display == null || display.isDisposed()) {
-//                             setCanceled(true);
-//                             return;
-//                     }
-//                     
-//                     display.syncExec(new Runnable() {
-//                             @Override
-//                             public void run() {
-//                                     statusLabel.setText(mProgressTitle);
-//                             }
-//                     });
-//             }
-//
-//             /**
-//              * set working file name to show during uninstalling 
-//              */
-//             @Override
-//             public void workedSubTitle(String subTitle) {
-//                     if (subTitle.length() > MAX_LENGTH) {
-//                             mSubTitle = subTitle.substring(0, MAX_LENGTH - 2);
-//                             mSubTitle = mSubTitle + STRING_ETC;
-//                     } else {
-//                             mSubTitle = subTitle;
-//                     }
-//                     
-//                     if (display == null || display.isDisposed()) {
-//                             setCanceled(true);
-//                             return;
-//                     }
-//                     
-//                     display.asyncExec(new Runnable() {
-//                             @Override
-//                             public void run() {
-//                                     mSubTitleOfProgress.setText(mSubTitle);
-//                             }
-//                     });
-//             }
-//             
-//             @Override
-//             public void workedProcess(String title) {
-//                     if (title == null || title.isEmpty()) {
-//                             return;
-//                     }
-//                     
-//                     workedTitle("Processing : package \"" + mProgressTitle + "\"");
-//             }
-//
-//             @Override
-//             public void workedDownload(long size) {
-//                     //Do nothing
-//             }
-//
-//             @Override
-//             public void setDownloadStartTime(long startTime) {
-//                     //Do nothing
-//             }
-//
-//             @Override
-//             public void workedChecksum(long size) {
-//                     //Do nothing
-//             }
-//
-//             @Override
-//             public void workedProgressbar(int percent) {
-//                     progressBar.setSelection(percent);
-//             }
-//
-//             @Override
-//             public void workedRefresh() {
-//                     //Do nothing
-//
-//             }
-//             
-//             @Override
-//             public void setError(int errorCode) {
-//                     //Do nothing
-//                     
-//             }
-//
-//             @Override
-//             public void workedDownload(String title) {
-//                     //Do nothing                    
-//             }
-//
-//             @Override
-//             public void workedChecksum(String title) {
-//                     //Do nothing
-//                     
-//             }
-//     }
-//}
-//>>>>>>> Stashed changes
index 51418e6..7044d59 100644 (file)
@@ -31,23 +31,32 @@ package org.tizen.installmanager.ui.page;
 
 
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.tizen.installmanager.core.IMFatalException;
 import org.tizen.installmanager.lib.ErrorController;
 import org.tizen.installmanager.lib.IMError;
 import org.tizen.installmanager.lib.Log;
+import org.tizen.installmanager.ui.InstallManagerWindow;
+import org.tizen.installmanager.ui.dialog.AddExtraRepositoryDialog;
 
 /**
  * This class displays installable package list on page.
  * @author Yongsung Kim <yongsung1.kim@samsung.com>
  */
 public class UpdatableListPage extends PackageListPage {
-
+       private static final String RSC_PATH_IMAGE_NEW = RESOURCE_PATH_NEW + "/02_installation_option_bg.png";
        static final String RSC_PATH_IMAGE = RESOURCE_PATH + "/install_manager_graphicmotif_002.png";
        static final String STRING_TITLE = "Update";
        static final String STRING_SUBTITLE = "Updated components are installed.\n" +
                                                                                "You can select additional components for installation as well.";
+       private Composite buttonComposite;
+       
+       private AddExtraRepositoryDialog extraDialog;
+       private Button addExtraButton;
        
        /**
         * @param parent
@@ -55,16 +64,49 @@ public class UpdatableListPage extends PackageListPage {
         */
        public UpdatableListPage(Composite parent, int style) {
                super(parent, style, Type.UPDATE);
-               setLeftImageFromResource(RSC_PATH_IMAGE);
-               setTitleBounds(160, 3, 468, 20);
-               setSubTitleBounds(160, 25, 468, 30);
-               setCustomCompositeBounds(160, 60, 468, 334);
-               setTitle(STRING_TITLE);
-               setSubTitle(STRING_SUBTITLE);
-               setSubTitleFont(new FontData("Dejavu Sans", 9, SWT.NONE));
-               tree.setBounds(0, 0, 447, 260);
-               lblRequiredSize.setBounds(300, 265, 210, 23);
+//             setLeftImageFromResource(RSC_PATH_IMAGE);
+//             setTitleBounds(160, 3, 468, 20);
+//             setSubTitleBounds(160, 25, 468, 30);
+//             setCustomCompositeBounds(160, 60, 468, 334);
+               
+               setLeftImageFromResource(RSC_PATH_IMAGE_NEW);
+               disableTitleBounds();
+               disableSubtitleBounds();
+
+               setTitleLabelText(STRING_TITLE);
+               
+//             setTitle(STRING_TITLE);
+//             setSubTitle(STRING_SUBTITLE);
+//             setSubTitleFont(new FontData("Dejavu Sans", 9, SWT.NONE));
+//             tree.setBounds(0, 0, 447, 260);
+//             lblRequiredSize.setBounds(300, 265, 210, 23);
 //             lblDescriptions.setBounds(0, 265, 124, 17);
+               
+               buttonComposite = new Composite(getCustomComposite(), SWT.NONE);
+               buttonComposite.setBounds(10, 31, 134, 268);
+               buttonComposite.setBackground(InstallManagerWindow.getBackgroundColor());
+               setAddRepositoryButton();
+       }
+       
+       /**
+        * Set add Repository button. 
+        */
+       private void setAddRepositoryButton() {
+               if (addExtraButton == null) {
+                       addExtraButton = new Button(buttonComposite ,SWT.NONE | SWT.LEFT);                      
+               }
+
+               addExtraButton.setBounds(0, 0, 134, 34);
+               addExtraButton.setText("Extra repository");
+               addExtraButton.setBackground(InstallManagerWindow.getBackgroundColor());
+               
+               addExtraButton.addSelectionListener(new SelectionAdapter() {
+                       public void widgetSelected(SelectionEvent e) {
+                               extraDialog = new AddExtraRepositoryDialog(buttonComposite.getShell(), viewController);
+                               extraDialog.open();
+                               loadPage(InstallManagerWindow.getInstallManagerWindow().getViewController());
+                       }
+               });
        }
 
        /**
@@ -75,7 +117,7 @@ public class UpdatableListPage extends PackageListPage {
                getItems().clear();
 
                try {
-                       loadPackagesToTreeViewer(viewController.getInstallableMetaPackageList());
+                       loadPackagesToTreeViewer(viewController.getInstallableMetaPackageList(), Type.UPDATE);
                        viewController.loadSdkExtension();
                        addExtensionPackagesToExtra(viewController.getRootMetaPackageListOfExtension());
                        
index f5562bd..5176b8a 100644 (file)
@@ -273,11 +273,11 @@ public class WelcomePage extends PageTemplate {
                @Override
                public void mouseDown(MouseEvent e) {
                        System.out.println("button is pushed.");
-                       mainWindow.getNextButton().notifyListeners(SWT.Selection, new Event());
                        buttonInstall.setSelection(true);
 //                     mainWindow.showComposite(mainWindow.getComponentSelectionPage());
                                selectedButton = INSTALLMANAGER_ACTION.INSTALL;
                                Config.status = Config.Status.INSTALL;
+                               mainWindow.getNextButton().notifyListeners(SWT.Selection, new Event());
                }
                
                @Override
@@ -440,16 +440,19 @@ public class WelcomePage extends PageTemplate {
                
                @Override
                public void mouseDown(MouseEvent e) {
-                       System.out.println("button is pushed.");
-                       buttonUninstall.setSelection(true);
-                               Config.status = Config.Status.UNINSTALL;
-                               selectedButton = INSTALLMANAGER_ACTION.UNINSTALL;
+                       System.out.println("uninstall button is pushed.");
+                       if (buttonUninstall.getEnabledFlag()) {
+                               buttonUninstall.setSelection(true);
+                               Config.status = Config.Status.UNINSTALL;
+                               selectedButton = INSTALLMANAGER_ACTION.UNINSTALL;
+                               mainWindow.getNextButton().notifyListeners(SWT.Selection, new Event());                                 
+                               }
                }
                
                @Override
                public void mouseDoubleClick(MouseEvent e) {
                        System.out.println("double click.");
-               }
+               }                               
                });
        }
        
@@ -601,13 +604,13 @@ public class WelcomePage extends PageTemplate {
                
                if (!viewController.existRemovablePackage()) {
 //                     buttonInstall.setText("Install the new " + Config.SDK_NAME + " version.");
-                       buttonInstall.setBounds(26, 40, 500, 22);
+//                     buttonInstall.setBounds(26, 40, 500, 22);
 
 //                     buttonInstall.setSelection(true);
 //                     buttonUninstall.setSelection(false);
 
                        buttonInstall.setEnabled(true);
-                       buttonUninstall.setEnabled(false);
+                       buttonUninstall.setEnabledFlag(false);
                        
                        if (isMultiSdk) {
                                buttonUpdate.setSelection(false);
@@ -635,12 +638,15 @@ public class WelcomePage extends PageTemplate {
 
                        } else {
 //                             buttonInstall.setText("Install or update the " + Config.SDK_NAME);
-                               Config.status = Config.Status.UPDATE;
+                               buttonUninstall.setEnabledFlag(true);
+                               Config.status = Config.Status.UNINSTALL;
                        }
 
 //                     buttonInstall.setSelection(true);
 //                     buttonUninstall.setSelection(false);
                        
+                       installTextLabel.setText("Update");
+                       installTextLabel.setBounds(132, 197, 130, 33);
                        buttonInstall.setEnabled(true);
                        buttonUninstall.setEnabled(true);