From abf86a5c16340339fd259527fa99e9135e9d71e0 Mon Sep 17 00:00:00 2001
From: "Dott. Federico Volpini" <federico.volpini@isti.cnr.it>
Date: Mon, 7 Oct 2013 10:02:15 +0000
Subject: [PATCH] Added progress monitor percentage (%) - Feature request #325

---
 .../tools/packaging/tool/gui/GUI.java         | 182 ++++++++++--------
 .../tools/packaging/tool/gui/Page4.java       |   1 +
 .../tools/packaging/tool/gui/PagePartPR.java  |   2 +
 .../tools/packaging/tool/impl/PageImpl.java   |  16 +-
 4 files changed, 124 insertions(+), 77 deletions(-)

diff --git a/mpa/org.universaal.tools.packaging.tool/src/org/universaal/tools/packaging/tool/gui/GUI.java b/mpa/org.universaal.tools.packaging.tool/src/org/universaal/tools/packaging/tool/gui/GUI.java
index a60a53a96..e4e97b2a8 100644
--- a/mpa/org.universaal.tools.packaging.tool/src/org/universaal/tools/packaging/tool/gui/GUI.java
+++ b/mpa/org.universaal.tools.packaging.tool/src/org/universaal/tools/packaging/tool/gui/GUI.java
@@ -230,88 +230,120 @@ public class GUI extends WizardMod {
 	}
 
 	@Override
-	public void addPages() {
+	public void addPages(){
+		addPages(false);
+		addPages(true);
+	}
+
+	public void addPages(boolean percentage) {
 		if(this.parts != null){
 			
-			if(parts.size() > 1)
-				mpa.getAAL_UAPP().getApplication().setMultipart(true);
-			else
-				mpa.getAAL_UAPP().getApplication().setMultipart(false);
-
-			createTempContainer();
-			genEffectivePom(this.parts);
-			if(!recovered) loadDataFromManPOM();
+			if(!percentage){
+				if(parts.size() > 1)
+					mpa.getAAL_UAPP().getApplication().setMultipart(true);
+				else
+					mpa.getAAL_UAPP().getApplication().setMultipart(false);
+	
+				createTempContainer();
+				genEffectivePom(this.parts);
+				if(!recovered) loadDataFromManPOM();
 			
-			p0 = new StartPage(Page.PAGE_START);
-			addPage(p0);
-			p0.setMPA(mpa);
+				p0 = new StartPage(Page.PAGE_START);
+				addPage(p0);
+				p0.setMPA(mpa);
+				
+				p1 = new Page1(Page.PAGE1);
+				addPage(p1);
+				p1.setMPA(mpa);
+	
+				p2 = new Page2(Page.PAGE2);
+				addPage(p2);
+				p2.setMPA(mpa);
+	
+				pdu = new PageDU(Page.PAGE_DU);
+				addPage(pdu);
+				pdu.setMPA(mpa);
 			
-			p1 = new Page1(Page.PAGE1);
-			addPage(p1);
-			p1.setMPA(mpa);
-
-			p2 = new Page2(Page.PAGE2);
-			addPage(p2);
-			p2.setMPA(mpa);
-
-			pdu = new PageDU(Page.PAGE_DU);
-			addPage(pdu);
-			pdu.setMPA(mpa);
-		
-			par = new PageAppResources(Page.PAGE_APP_RESOURCES);
-			addPage(par);
-			par.setMPA(mpa);
-		
-			pl = new PageLicenses(Page.PAGE_LICENSE);
-			addPage(pl);
-			pl.setMPA(mpa);
-		
-			p3 = new Page3(Page.PAGE3);
-			addPage(p3);
-			p3.setMPA(mpa);
-
-			p4 = new Page4(Page.PAGE4, 0, null, null);
-			addPage(p4);
-			p4.setMPA(mpa);
-
-			p5 = new Page5(Page.PAGE5);
-			addPage(p5);
-			p5.setMPA(mpa);
-		
-			for(int i = 0; i < parts.size(); i++){
-
-				String partName = parts.get(i).getName();
+				par = new PageAppResources(Page.PAGE_APP_RESOURCES);
+				addPage(par);
+				par.setMPA(mpa);
+			
+				pl = new PageLicenses(Page.PAGE_LICENSE);
+				addPage(pl);
+				pl.setMPA(mpa);
+			
+				p3 = new Page3(Page.PAGE3);
+				addPage(p3);
+				p3.setMPA(mpa);
+	
+				p4 = new Page4(Page.PAGE4, 0, null, null);
+				addPage(p4);
+				p4.setMPA(mpa);
+	
+				p5 = new Page5(Page.PAGE5);
+				addPage(p5);
+				p5.setMPA(mpa);
+			
+				for(int i = 0; i < parts.size(); i++){
+	
+					String partName = parts.get(i).getName();
+					
+					ppB = new PagePartBundle(Page.PAGE_PART_BUNDLE+partName, i); //deployment units
+					addPage(ppB);
+					ppB.setMPA(mpa);
+					ppB.setArtifact(parts.get(i));
+	
+					ppDU = new PagePartDU(Page.PAGE_PART_DU+partName, i); //deployment units
+					addPage(ppDU);
+					ppDU.setMPA(mpa);
+					ppDU.setArtifact(parts.get(i));
+					
+					ppEU = new PagePartEU(Page.PAGE_PART_EU+partName, i); // execution units
+					addPage(ppEU);
+					ppEU.setMPA(mpa);
+					ppEU.setArtifact(parts.get(i));
+	
+					ppPC = new PagePartPC(Page.PAGE_PART_PC+partName, i); // part capabilities
+					addPage(ppPC);
+					ppPC.setMPA(mpa);
+					ppPC.setArtifact(parts.get(i));
+	
+					ppPR = new PagePartPR(Page.PAGE_PART_PR+partName, i, 0, null, null); // part requirements
+					addPage(ppPR);
+					ppPR.setMPA(mpa);
+					ppPR.setArtifact(parts.get(i));
+				}
+	
+				p_end = new EndPage(Page.PAGE_END);
+				addPage(p_end);
+				p_end.setMPA(mpa);
+				addingPermanentStorageDecorator();
+			} else {
+				p0.setPercentage((double)getPageNumber(getPage(Page.PAGE_START))/(double)getPageCount());
+				p1.setPercentage((double)getPageNumber(getPage(Page.PAGE1))/(double)getPageCount());
+				p2.setPercentage((double)getPageNumber(getPage(Page.PAGE2))/(double)getPageCount());
+				pdu.setPercentage((double)getPageNumber(getPage(Page.PAGE_DU))/(double)getPageCount());
+				par.setPercentage((double)getPageNumber(getPage(Page.PAGE_APP_RESOURCES))/(double)getPageCount());
+				pl.setPercentage((double)getPageNumber(getPage(Page.PAGE_LICENSE))/(double)getPageCount());
+				p3.setPercentage((double)getPageNumber(getPage(Page.PAGE3))/(double)getPageCount());
+				p4.setPercentage((double)getPageNumber(getPage(Page.PAGE4))/(double)getPageCount());
+				p5.setPercentage((double)getPageNumber(getPage(Page.PAGE5))/(double)getPageCount());
 				
-				ppB = new PagePartBundle(Page.PAGE_PART_BUNDLE+partName, i); //deployment units
-				addPage(ppB);
-				ppB.setMPA(mpa);
-				ppB.setArtifact(parts.get(i));
-
-				ppDU = new PagePartDU(Page.PAGE_PART_DU+partName, i); //deployment units
-				addPage(ppDU);
-				ppDU.setMPA(mpa);
-				ppDU.setArtifact(parts.get(i));
+				for(int i = 0; i < parts.size(); i++){
+	
+					String partName = parts.get(i).getName();
+					
+					ppB.setPercentage((double)getPageNumber(getPage(Page.PAGE_PART_BUNDLE+partName))/(double)getPageCount());
+					ppDU.setPercentage((double)getPageNumber(getPage(Page.PAGE_PART_DU+partName))/(double)getPageCount());
+					ppEU.setPercentage((double)getPageNumber(getPage(Page.PAGE_PART_EU+partName))/(double)getPageCount());
+					ppPC.setPercentage((double)getPageNumber(getPage(Page.PAGE_PART_PC+partName))/(double)getPageCount());
+					ppPR.setPercentage((double)getPageNumber(getPage(Page.PAGE_PART_PR+partName))/(double)getPageCount());
+				}
+	
+				p_end.setPercentage(100);
 				
-				ppEU = new PagePartEU(Page.PAGE_PART_EU+partName, i); // execution units
-				addPage(ppEU);
-				ppEU.setMPA(mpa);
-				ppEU.setArtifact(parts.get(i));
-
-				ppPC = new PagePartPC(Page.PAGE_PART_PC+partName, i); // part capabilities
-				addPage(ppPC);
-				ppPC.setMPA(mpa);
-				ppPC.setArtifact(parts.get(i));
-
-				ppPR = new PagePartPR(Page.PAGE_PART_PR+partName, i, 0, null, null); // part requirements
-				addPage(ppPR);
-				ppPR.setMPA(mpa);
-				ppPR.setArtifact(parts.get(i));
 			}
-
-			p_end = new EndPage(Page.PAGE_END);
-			addPage(p_end);
-			p_end.setMPA(mpa);
-			addingPermanentStorageDecorator();
+			
 		}
 		else{
 			p = new ErrorPage(Page.PAGE_ERROR);
diff --git a/mpa/org.universaal.tools.packaging.tool/src/org/universaal/tools/packaging/tool/gui/Page4.java b/mpa/org.universaal.tools.packaging.tool/src/org/universaal/tools/packaging/tool/gui/Page4.java
index 05e635cc4..6d3c7fc69 100644
--- a/mpa/org.universaal.tools.packaging.tool/src/org/universaal/tools/packaging/tool/gui/Page4.java
+++ b/mpa/org.universaal.tools.packaging.tool/src/org/universaal/tools/packaging/tool/gui/Page4.java
@@ -502,6 +502,7 @@ public class Page4 extends PageImpl {
 					new SingleRequirement(req5.getText(), val5.getText(), LogicalCriteria.valueOf(c5.getText())));
 
 			p_req.setMPA(multipartApplication);
+			p_req.setPercentage(this.getPercentage());
 			addPageCustom(this, p_req);
 		}
 
diff --git a/mpa/org.universaal.tools.packaging.tool/src/org/universaal/tools/packaging/tool/gui/PagePartPR.java b/mpa/org.universaal.tools.packaging.tool/src/org/universaal/tools/packaging/tool/gui/PagePartPR.java
index a429fc1db..c191161c1 100644
--- a/mpa/org.universaal.tools.packaging.tool/src/org/universaal/tools/packaging/tool/gui/PagePartPR.java
+++ b/mpa/org.universaal.tools.packaging.tool/src/org/universaal/tools/packaging/tool/gui/PagePartPR.java
@@ -488,6 +488,8 @@ public class PagePartPR extends PageImpl {
 					new SingleRequirement(req5.getText(), val5.getText(), LogicalCriteria.valueOf(c5.getText())));
 
 			p_req.setMPA(multipartApplication);
+			p_req.setPercentage(this.getPercentage());
+			
 			addPageCustom(this, p_req);
 
 			//otherPartReqs.set(partNumber, index+1);
diff --git a/mpa/org.universaal.tools.packaging.tool/src/org/universaal/tools/packaging/tool/impl/PageImpl.java b/mpa/org.universaal.tools.packaging.tool/src/org/universaal/tools/packaging/tool/impl/PageImpl.java
index ecbd5fbc6..af3fe07e6 100644
--- a/mpa/org.universaal.tools.packaging.tool/src/org/universaal/tools/packaging/tool/impl/PageImpl.java
+++ b/mpa/org.universaal.tools.packaging.tool/src/org/universaal/tools/packaging/tool/impl/PageImpl.java
@@ -62,12 +62,15 @@ public abstract class PageImpl extends WizardPageMod implements Page {
 	protected static int otherGeneralReqs = 1;
 //	protected static List<Integer> otherPartReqs;
 	protected static int otherPartReqs = 1;
-	
+	private String description = "";
+	private double percentage;
+
 	protected PageImpl(String pageName, String description){
 
 		super(pageName);
-		setDescription(description);
 		setTitle(pageName);		
+		setDescription(description);
+    	this.description = description;
 
 //		otherPartReqs = new ArrayList<Integer>();
 
@@ -203,4 +206,13 @@ public abstract class PageImpl extends WizardPageMod implements Page {
     	}
     	serializeMPA();
     }
+    
+    public void setPercentage(double percentage){
+    	percentage = percentage * 100.0;
+    	setDescription(description + " - Complete: "+(int)percentage+"%");
+    }
+    
+    public double getPercentage(){
+    	return percentage;
+    }
 }
\ No newline at end of file
-- 
GitLab