@@ -66,33 +66,39 @@ public class Controller {
6666 private PackageToolPopup crossPageProgressIndicatorPopUp ;
6767 private Page currentPage ;
6868 private Stack <Page > previousPages ;
69-
69+
7070 /* For handling file dialog mutex locks as a MacOS bug workaround DC-1624 */
7171 private final ConcurrentHashMap <Object , Semaphore > locks = new ConcurrentHashMap <>();
72-
72+
7373 public Controller () {
7474 this .container = new BorderPane ();
7575 container .getStyleClass ().add (CssConstants .ROOT_CLASS );
7676 previousPages = new Stack <>();
7777 toolVersion = new ApplicationVersion ();
7878 }
7979
80- public Factory getFactory () { return factory ; }
81- public void setFactory (Factory factory ) { this .factory = factory ; }
80+ public Factory getFactory () {
81+ return factory ;
82+ }
83+
84+ public void setFactory (Factory factory ) {
85+ this .factory = factory ;
86+ }
8287
8388 public void startApp () {
8489 defaultPackageGenerationParametersFilePath = factory .getConfiguration ().getPackageGenerationParameters ();
8590 packageFilenameIllegalCharacters = factory .getConfiguration ().getPackageFilenameIllegalCharacters ();
8691 availableProjects = factory .getConfiguration ().getAvailableProjects ();
8792 showHome (true );
8893 }
89-
94+
9095 /**
9196 * Switch to home.
97+ *
9298 * @param clear Set to true if the fields on the home page should be cleared, false if not.
9399 */
94100 public void showHome (boolean clear ) {
95- container .setTop ((VBox )factory .getHeaderView ());
101+ container .setTop ((VBox ) factory .getHeaderView ());
96102 currentPage = Page .HOMEPAGE ;
97103 packageDescription = null ;
98104 packageDescriptionFile = null ;
@@ -112,8 +118,9 @@ public void showHome(boolean clear) {
112118 */
113119 private void clearPresenters () {
114120 factory .getHomepagePresenter ().clear ();
121+ factory .getPackageMetadataPresenter ().clear ();
115122 factory .getCreateNewPackagePresenter ().clear ();
116- factory .getContentDirectoryPresenter ().clear ();
123+ factory .getOpenExistingPackagePresenter ().clear ();
117124 factory .getPackageDescriptionPresenter ().clear ();
118125 factory .getPackageGenerationPresenter ().clear ();
119126 }
@@ -122,9 +129,19 @@ private void clearPresenters() {
122129 * Switch to homepage
123130 */
124131 private void showHomepage () {
132+ previousPages .clear ();
133+ clearPresenters ();
125134 show (factory .getHomepagePresenter ());
126135 }
127136
137+ /**
138+ * Switch to package metadata
139+ */
140+ private void showPackageMetadata () {
141+ show (factory .getPackageMetadataPresenter ());
142+ factory .getPackageMetadataPresenter ().setExistingValues ();
143+ }
144+
128145 /**
129146 * Switch to creating package description.
130147 */
@@ -136,7 +153,14 @@ public void showCreatePackageDescription() {
136153 * Switch to the screen for selecting a content directory.
137154 */
138155 public void showSelectContentDirectory () {
139- show (factory .getContentDirectoryPresenter ());
156+ show (factory .getOpenExistingPackagePresenter ());
157+ }
158+
159+ /**
160+ * Switch to the screen for selecting a package directory.
161+ */
162+ public void showSelectPackageDirectory () {
163+ show (factory .getOpenExistingPackagePresenter ());
140164 }
141165
142166 /**
@@ -148,12 +172,13 @@ public Parent asParent() {
148172
149173 /**
150174 * Shows the presenter and optionally clears the information
175+ *
151176 * @param presenter The presenter to show
152177 */
153178 private void show (Presenter presenter ) {
154179 container .setCenter (presenter .display ());
155180 }
156-
181+
157182 public void showGeneratePackage () {
158183 show (factory .getPackageGenerationPresenter ());
159184 }
@@ -163,9 +188,10 @@ public PackageDescriptionPresenter showPackageDescriptionViewer() {
163188 show (presenter );
164189 return presenter ;
165190 }
191+
166192 /**
167193 * Pops up a dialog that waits for the user to choose a file.
168- *
194+ *
169195 * @param chooser the FileChooser
170196 * @return file chosen or null on cancel
171197 */
@@ -185,10 +211,11 @@ public File showOpenFileDialog(FileChooser chooser) {
185211 return null ;
186212 }
187213 }
188-
189- /** Pops up a save file dialog.
190- *
191- * @param chooser the FileChooser
214+
215+ /**
216+ * Pops up a save file dialog.
217+ *
218+ * @param chooser the FileChooser
192219 * @return File to save or null on cancel.
193220 */
194221 public File showSaveFileDialog (FileChooser chooser ) {
@@ -209,6 +236,7 @@ public File showSaveFileDialog(FileChooser chooser) {
209236
210237 /**
211238 * Pops up a dialog that waits for the user to choose a directory
239+ *
212240 * @param chooser the DirectoryChooser
213241 * @return directory chosen or null on cancel
214242 */
@@ -227,35 +255,19 @@ public File showOpenDirectoryDialog(DirectoryChooser chooser) {
227255 return null ;
228256 }
229257 }
230-
258+
231259 private Semaphore getLock (Object exclusive ) {
232260 locks .putIfAbsent (exclusive , new Semaphore (1 ));
233261 return locks .get (exclusive );
234262 }
235-
236- //Advances the application to the next page. Or redisplays the current page if it's the last page.
237- public void goToNextPage () {
238- Page nextPage = currentPage ;
239- int currentPosition = currentPage .getPosition ();
240- int nextPosition = Integer .MAX_VALUE ;
241- for (Page pages : Page .values ()) {
242- if (pages .getPosition () > currentPosition && pages .getPosition () < nextPosition && pages .isValidPage (this )) {
243- nextPosition = pages .getPosition ();
244- }
245- }
246-
247- if (nextPosition < Integer .MAX_VALUE ) {
248- Page pageForPosition = Page .getPageByPosition (nextPosition );
249- if (pageForPosition != null ) {
250- nextPage = pageForPosition ;
251- }
252- }
253263
264+ //Advances the application to the next page. Or redisplays the current page if it's the last page.
265+ public void goToNextPage (Page nextPage ) {
254266 previousPages .push (currentPage );
255267 currentPage = nextPage ;
256268 showPage ();
257269 }
258-
270+
259271 //Returns the application to the previous page, or redisplays the current page if it's the first page.
260272 public void goToPreviousPage () {
261273 if (previousPages != null && !previousPages .isEmpty ()) {
@@ -264,20 +276,18 @@ public void goToPreviousPage() {
264276 }
265277 }
266278
267- public void goToPage (Page page ) {
268- currentPage = page ;
269- showPage ();
270- }
271-
272279 /**
273- * Shows the current page, a tells the presenter if it should clear it's information.
280+ * Shows the current page, a tells the presenter if it should clear it's information.
274281 */
275282 private void showPage () {
276- factory .getHeaderView ().highlightNextPage (currentPage . getPosition () );
283+ factory .getHeaderView ().highlightNextPage (currentPage );
277284 switch (currentPage ) {
278285 case HOMEPAGE :
279286 showHomepage ();
280287 break ;
288+ case PACKAGE_METADATA :
289+ showPackageMetadata ();
290+ break ;
281291 case CREATE_NEW_PACKAGE :
282292 showCreatePackageDescription ();
283293 break ;
@@ -290,25 +300,28 @@ private void showPage() {
290300 case SELECT_CONTENT_DIRECTORY :
291301 showSelectContentDirectory ();
292302 break ;
303+ case SELECT_PACKAGE_DIRECTORY :
304+ showSelectPackageDirectory ();
305+ break ;
293306 default :
294307 //There is no next page do nothing
295308 break ;
296309 }
297310 }
298-
311+
299312 public void setPackageDescription (PackageDescription description ) {
300313 this .packageDescription = description ;
301314 }
302-
315+
303316 public PackageDescription getPackageDescription () {
304317 return packageDescription ;
305318 }
306-
307- public void setPackageDescriptionFile (File packageDescriptionFile ){
319+
320+ public void setPackageDescriptionFile (File packageDescriptionFile ) {
308321 this .packageDescriptionFile = packageDescriptionFile ;
309322 }
310323
311- public File getPackageDescriptionFile (){
324+ public File getPackageDescriptionFile () {
312325 return packageDescriptionFile ;
313326 }
314327
@@ -320,17 +333,29 @@ public void setContentRoot(File contentRoot) {
320333 this .contentRoot = contentRoot ;
321334 }
322335
323- public File getRootArtifactDir () { return rootArtifactDir ; }
336+ public File getRootArtifactDir () {
337+ return rootArtifactDir ;
338+ }
324339
325- public void setRootArtifactDir (File rootArtifactDir ) { this .rootArtifactDir = rootArtifactDir ; }
340+ public void setRootArtifactDir (File rootArtifactDir ) {
341+ this .rootArtifactDir = rootArtifactDir ;
342+ }
326343
327- public String getPackageFilenameIllegalCharacters () { return packageFilenameIllegalCharacters ; }
344+ public String getPackageFilenameIllegalCharacters () {
345+ return packageFilenameIllegalCharacters ;
346+ }
328347
329- public void setPackageFilenameIllegalCharacters (String illegalCharacters ) { this .packageFilenameIllegalCharacters = illegalCharacters ;}
348+ public void setPackageFilenameIllegalCharacters (String illegalCharacters ) {
349+ this .packageFilenameIllegalCharacters = illegalCharacters ;
350+ }
330351
331- public String getAvailableProjects () { return availableProjects ; }
352+ public String getAvailableProjects () {
353+ return availableProjects ;
354+ }
332355
333- public void setAvailableProjects (String availableProjects ) { this .availableProjects = availableProjects ; }
356+ public void setAvailableProjects (String availableProjects ) {
357+ this .availableProjects = availableProjects ;
358+ }
334359
335360 public PackageState getPackageState () {
336361 return packageState ;
@@ -351,14 +376,16 @@ public void setCrossPageProgressIndicatorPopUp(PackageToolPopup crossPageProgres
351376 public void setToolBuildNumber (String buildNumber ) {
352377 toolVersion .setBuildNumber (buildNumber );
353378 }
379+
354380 public void setToolBuildRevision (String buildRevision ) {
355381 toolVersion .setBuildRevision (buildRevision );
356382 }
383+
357384 public void setToolBuildTimestamp (String buildTimestamp ) {
358385 toolVersion .setBuildTimeStamp (buildTimestamp );
359386 }
360387
361- public String getDefaultPackageGenerationParametersFilePath () {
388+ public String getDefaultPackageGenerationParametersFilePath () {
362389 return defaultPackageGenerationParametersFilePath ;
363390 }
364391}
0 commit comments