author | dadubrow |
Wed, 25 Aug 2010 15:24:01 -0500 | |
changeset 1884 | 94c9fe3693ea |
parent 1826 | 48569468eaf3 |
child 1994 | e9be28ae423a |
permissions | -rw-r--r-- |
1810 | 1 |
/* |
2 |
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). |
|
3 |
* All rights reserved. |
|
4 |
* This component and the accompanying materials are made available |
|
5 |
* under the terms of the License "Eclipse Public License v1.0" |
|
6 |
* which accompanies this distribution, and is available |
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 |
* |
|
9 |
* Initial Contributors: |
|
10 |
* Nokia Corporation - initial contribution. |
|
11 |
* |
|
12 |
* Contributors: |
|
13 |
* |
|
14 |
* Description: |
|
15 |
* |
|
16 |
*/ |
|
17 |
||
18 |
||
19 |
package com.nokia.carbide.internal.discovery.ui.wizard; |
|
20 |
||
21 |
import java.io.File; |
|
22 |
import java.util.ArrayList; |
|
23 |
import java.util.Collection; |
|
1884
94c9fe3693ea
Filter initial features from export wizard + sort wizards by feature id + version
dadubrow
parents:
1826
diff
changeset
|
24 |
import java.util.HashSet; |
94c9fe3693ea
Filter initial features from export wizard + sort wizards by feature id + version
dadubrow
parents:
1826
diff
changeset
|
25 |
import java.util.Set; |
1810 | 26 |
|
27 |
import org.eclipse.core.runtime.IPath; |
|
28 |
import org.eclipse.core.runtime.IProgressMonitor; |
|
29 |
import org.eclipse.core.runtime.IStatus; |
|
30 |
import org.eclipse.core.runtime.Path; |
|
31 |
import org.eclipse.core.runtime.Status; |
|
32 |
import org.eclipse.jface.dialogs.DialogPage; |
|
33 |
import org.eclipse.swt.SWT; |
|
34 |
import org.eclipse.swt.events.SelectionAdapter; |
|
35 |
import org.eclipse.swt.events.SelectionEvent; |
|
36 |
import org.eclipse.swt.widgets.Composite; |
|
37 |
import org.eclipse.swt.widgets.FileDialog; |
|
38 |
import org.eclipse.ui.progress.UIJob; |
|
39 |
||
1824 | 40 |
import com.nokia.carbide.discovery.ui.Messages; |
1810 | 41 |
import com.nokia.cpp.internal.api.utils.ui.BrowseDialogUtils; |
42 |
||
43 |
/** |
|
44 |
* Page in export wizard |
|
45 |
*/ |
|
46 |
class ExportPage extends AbstractImportExportPage { |
|
47 |
||
48 |
private File file; |
|
49 |
private Collection<FeatureInfo> featureInfos; |
|
50 |
private static String saveAsParent; |
|
1884
94c9fe3693ea
Filter initial features from export wizard + sort wizards by feature id + version
dadubrow
parents:
1826
diff
changeset
|
51 |
private Set<String> filteredFeatureIds; |
1810 | 52 |
|
1884
94c9fe3693ea
Filter initial features from export wizard + sort wizards by feature id + version
dadubrow
parents:
1826
diff
changeset
|
53 |
protected ExportPage(Collection<String> filteredFeatureIds) { |
1810 | 54 |
super("ExportPage"); //$NON-NLS-1$ |
1884
94c9fe3693ea
Filter initial features from export wizard + sort wizards by feature id + version
dadubrow
parents:
1826
diff
changeset
|
55 |
this.filteredFeatureIds = new HashSet<String>(filteredFeatureIds); |
1824 | 56 |
setTitle(Messages.ExportPage_Title); |
57 |
setDescription(Messages.ExportPage_Description); |
|
1810 | 58 |
} |
59 |
||
60 |
public void createControl(Composite parent) { |
|
61 |
super.createControl(parent); |
|
62 |
Composite composite = (Composite) getControl(); |
|
63 |
||
1824 | 64 |
createViewerGroup(composite, Messages.ExportPage_ViewerGroupLabel); |
65 |
createBrowseGroup(composite, Messages.ExportPage_BrowseGroupLabel); |
|
1810 | 66 |
|
67 |
featureInfos = new ArrayList<FeatureInfo>(); |
|
68 |
||
69 |
setPageComplete(validatePage()); |
|
70 |
} |
|
71 |
||
72 |
@Override |
|
73 |
protected void createViewerGroup(Composite parent, String labelText) { |
|
74 |
super.createViewerGroup(parent, labelText); |
|
75 |
startGetInputJob(); |
|
76 |
updateViewer(); |
|
77 |
} |
|
78 |
||
79 |
@Override |
|
80 |
protected void createBrowseGroup(Composite parent, String labelText) { |
|
81 |
super.createBrowseGroup(parent, labelText); |
|
82 |
||
83 |
if (saveAsParent == null) |
|
84 |
saveAsParent = System.getProperty("user.home"); //$NON-NLS-1$ |
|
85 |
pathText.setText(new Path(saveAsParent).append("exportedFeatures.xml").toOSString()); //$NON-NLS-1$ |
|
86 |
browseButton.addSelectionListener(new SelectionAdapter() { |
|
87 |
@Override |
|
88 |
public void widgetSelected(SelectionEvent e) { |
|
89 |
FileDialog dialog = new FileDialog(getShell(), SWT.SAVE); |
|
1824 | 90 |
dialog.setText(Messages.ExportPage_FileDialogText); |
1810 | 91 |
BrowseDialogUtils.initializeFrom(dialog, pathText.getText()); |
92 |
dialog.setOverwrite(true); // prompt for overwrite |
|
93 |
String path = dialog.open(); |
|
94 |
if (path != null) { |
|
95 |
IPath saveAsPath = new Path(path); |
|
96 |
saveAsParent = saveAsPath.removeLastSegments(1).toString(); |
|
97 |
pathText.setText(saveAsPath.toOSString()); |
|
98 |
} |
|
99 |
} |
|
100 |
}); |
|
101 |
} |
|
102 |
||
103 |
private void startGetInputJob() { |
|
1824 | 104 |
UIJob j = new UIJob(Messages.ExportPage_GetFeaturesJobName) { |
1810 | 105 |
@Override |
106 |
public IStatus runInUIThread(IProgressMonitor monitor) { |
|
1884
94c9fe3693ea
Filter initial features from export wizard + sort wizards by feature id + version
dadubrow
parents:
1826
diff
changeset
|
107 |
viewer.setInput(getInstalledFeatureInfos(monitor)); |
1810 | 108 |
updateViewer(); |
109 |
return Status.OK_STATUS; |
|
1884
94c9fe3693ea
Filter initial features from export wizard + sort wizards by feature id + version
dadubrow
parents:
1826
diff
changeset
|
110 |
} |
1810 | 111 |
}; |
112 |
j.schedule(); |
|
113 |
} |
|
114 |
||
1884
94c9fe3693ea
Filter initial features from export wizard + sort wizards by feature id + version
dadubrow
parents:
1826
diff
changeset
|
115 |
private Collection<FeatureInfo> getInstalledFeatureInfos(IProgressMonitor monitor) { |
94c9fe3693ea
Filter initial features from export wizard + sort wizards by feature id + version
dadubrow
parents:
1826
diff
changeset
|
116 |
Collection<FeatureInfo> featureInfos = new ArrayList<FeatureInfo>(); |
94c9fe3693ea
Filter initial features from export wizard + sort wizards by feature id + version
dadubrow
parents:
1826
diff
changeset
|
117 |
// filter out the filtered ids |
94c9fe3693ea
Filter initial features from export wizard + sort wizards by feature id + version
dadubrow
parents:
1826
diff
changeset
|
118 |
for (FeatureInfo featureInfo : P2Utils.getInstalledFeatures(monitor)) { |
94c9fe3693ea
Filter initial features from export wizard + sort wizards by feature id + version
dadubrow
parents:
1826
diff
changeset
|
119 |
if (!filteredFeatureIds.contains(featureInfo.getId())) |
94c9fe3693ea
Filter initial features from export wizard + sort wizards by feature id + version
dadubrow
parents:
1826
diff
changeset
|
120 |
featureInfos.add(featureInfo); |
94c9fe3693ea
Filter initial features from export wizard + sort wizards by feature id + version
dadubrow
parents:
1826
diff
changeset
|
121 |
} |
94c9fe3693ea
Filter initial features from export wizard + sort wizards by feature id + version
dadubrow
parents:
1826
diff
changeset
|
122 |
|
94c9fe3693ea
Filter initial features from export wizard + sort wizards by feature id + version
dadubrow
parents:
1826
diff
changeset
|
123 |
return featureInfos; |
94c9fe3693ea
Filter initial features from export wizard + sort wizards by feature id + version
dadubrow
parents:
1826
diff
changeset
|
124 |
} |
94c9fe3693ea
Filter initial features from export wizard + sort wizards by feature id + version
dadubrow
parents:
1826
diff
changeset
|
125 |
|
1810 | 126 |
protected boolean validatePage() { |
127 |
setErrorMessage(null); |
|
1818 | 128 |
if (viewer.getTable().getItemCount() == 0) { |
1824 | 129 |
setErrorMessage(Messages.ExportPage_NoFeaturesError); |
1818 | 130 |
return false; |
131 |
} |
|
1810 | 132 |
if (viewer.getCheckedElements().length == 0) { |
1824 | 133 |
setErrorMessage(Messages.ExportPage_NoFeaturesSelectedError); |
1810 | 134 |
return false; |
135 |
} |
|
136 |
||
137 |
IPath path = new Path(pathText.getText()); |
|
138 |
file = path.toFile(); |
|
139 |
if (!file.isAbsolute()) { |
|
1824 | 140 |
setErrorMessage(Messages.ExportPage_NoFileError); |
1810 | 141 |
return false; |
142 |
} |
|
143 |
if (file.exists()) { |
|
1824 | 144 |
setMessage(Messages.ExportPage_FileOverwriteWarning, DialogPage.WARNING); |
1810 | 145 |
} |
146 |
||
147 |
return true; |
|
148 |
} |
|
149 |
||
150 |
public File getFile() { |
|
151 |
return file; |
|
152 |
} |
|
153 |
||
154 |
public Collection<FeatureInfo> getFeatureInfos() { |
|
155 |
featureInfos.clear(); |
|
156 |
for (Object o : viewer.getCheckedElements()) { |
|
157 |
featureInfos.add((FeatureInfo) o); |
|
158 |
} |
|
159 |
return featureInfos; |
|
160 |
} |
|
161 |
||
162 |
} |