1 21 22 package com.izforge.izpack.panels; 23 24 import java.util.Iterator ; 25 import java.util.Vector ; 26 27 import net.n3.nanoxml.XMLElement; 28 29 import com.izforge.izpack.Pack; 30 import com.izforge.izpack.installer.AutomatedInstallData; 31 import com.izforge.izpack.installer.PanelAutomation; 32 33 39 public class PacksPanelAutomationHelper implements PanelAutomation 40 { 41 42 48 public void makeXMLData(AutomatedInstallData idata, XMLElement panelRoot) 49 { 50 for (int i = 0; i < idata.allPacks.size(); i++) 52 { 53 Pack pack = (Pack) idata.allPacks.get(i); 54 XMLElement el = new XMLElement("pack"); 55 el.setAttribute("index", Integer.toString(i)); 56 el.setAttribute("name", pack.name); 57 Boolean selected = Boolean.valueOf(idata.selectedPacks.contains(pack)); 58 el.setAttribute("selected", selected.toString()); 59 60 panelRoot.addChild(el); 61 } 62 } 63 64 72 public boolean runAutomated(AutomatedInstallData idata, XMLElement panelRoot) 73 { 74 Vector pm = panelRoot.getChildrenNamed("pack"); 76 77 boolean result = true; 78 79 int size = pm.size(); 81 idata.selectedPacks.clear(); 82 for (int i = 0; i < size; i++) 83 { 84 XMLElement el = (XMLElement) pm.get(i); 85 Boolean selected = Boolean.TRUE; 87 if (selected.booleanValue()) 88 { 89 String index_str = el.getAttribute("index"); 90 91 if (index_str != null) 95 { 96 try 97 { 98 int index = Integer.parseInt(index_str); 99 if ((index >= 0) && (index < idata.availablePacks.size())) 100 { 101 idata.selectedPacks.add(idata.availablePacks.get(index)); 102 } 103 else 104 { 105 System.err.println("Invalid pack index \"" + index_str + "\" in line " 106 + el.getLineNr()); 107 result = false; 108 } 109 } 110 catch (NumberFormatException e) 111 { 112 System.err.println("Invalid pack index \"" + index_str + "\" in line " 113 + el.getLineNr()); 114 result = false; 115 } 116 } 117 else 118 { 119 String name = el.getAttribute("name"); 120 121 if (name != null) 122 { 123 Iterator pack_it = idata.availablePacks.iterator(); 125 126 boolean found = false; 127 128 while ((!found) && pack_it.hasNext()) 129 { 130 Pack pack = (Pack) pack_it.next(); 131 132 if (pack.name.equals(name)) 133 { 134 idata.selectedPacks.add(pack); 135 found = true; 136 } 137 138 } 139 140 if (!found) 141 { 142 System.err.println("Could not find selected pack named \"" + name 143 + "\" in line " + el.getLineNr()); 144 result = false; 145 } 146 147 } 148 149 } 150 151 } 152 153 } 154 155 return result; 156 } 157 158 } 159 | Popular Tags |