org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/WizardContext.java
changeset 467 5a2901872fcf
parent 466 129c94e78375
--- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/WizardContext.java	Tue Aug 17 13:40:28 2010 -0700
+++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/WizardContext.java	Wed Aug 18 09:30:53 2010 -0700
@@ -2,17 +2,19 @@
 
 import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeSupport;
+import java.io.FilterInputStream;
+import java.io.IOException;
 import java.io.InputStream;
 import java.text.MessageFormat;
+import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeMap;
+import java.util.TreeSet;
 
 import org.eclipse.core.databinding.DataBindingContext;
 import org.eclipse.core.databinding.UpdateValueStrategy;
 import org.eclipse.core.databinding.beans.BeansObservables;
-import org.eclipse.core.databinding.observable.Observables;
-import org.eclipse.core.databinding.observable.map.IObservableMap;
 import org.eclipse.core.databinding.observable.value.AbstractObservableValue;
 import org.eclipse.core.databinding.observable.value.IObservableValue;
 import org.eclipse.core.databinding.observable.value.ValueDiff;
@@ -31,7 +33,6 @@
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
 import org.symbian.tools.tmw.core.TMWCore;
 import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntime;
@@ -58,6 +59,7 @@
     private String widgetId;
 
     private String widgetName;
+    private final Collection<String> jsIncludes = new TreeSet<String>();
 
     public WizardContext() {
         IMobileWebRuntime[] runtimes = TMWCore.getRuntimesManager().getAllRuntimes();
@@ -73,7 +75,7 @@
         if (!file.exists()) {
             create(file.getParent());
         }
-        file.create(contents, false, new SubProgressMonitor(monitor, 100));
+        file.create(new NonClosingStream(contents), false, new SubProgressMonitor(monitor, 100));
         monitor.done();
         return file;
     }
@@ -93,11 +95,6 @@
         }
     }
 
-    protected void createLabel(Composite root, String text) {
-        Label label = new Label(root, SWT.NONE);
-        label.setText(text);
-    }
-
     private Text createText(Composite root, IObservableValue model, String propertyName,
             DataBindingContext bindingContext, AbstractDataBindingPage page, IValidator... validators) {
         Text text = new Text(root, SWT.BORDER);
@@ -117,13 +114,6 @@
                 validators);
     }
 
-    protected Text createTextForExt(Composite root, String property, String propertyName,
-            DataBindingContext bindingContext, AbstractDataBindingPage page) {
-        IObservableMap map = BeansObservables.observeMap(this, "extensions");
-        IObservableValue entry = Observables.observeMapEntry(map, property, String.class);
-        return createText(root, entry, propertyName, bindingContext, page);
-    }
-
     private IProjectTemplate getDefaultTemplate(IMobileWebRuntime runtime) {
         return TMWCoreUI.getProjectTemplateManager().getDefaultTemplate(runtime);
     }
@@ -187,6 +177,7 @@
 
         vars.put("widgetName", getWidgetName());
         vars.put("widgetId", getWidgetId());
+        vars.put("jsIncludes", jsIncludes);
         vars.putAll(extensions);
 
         return vars;
@@ -320,4 +311,20 @@
             });
         }
     }
+
+    private static final class NonClosingStream extends FilterInputStream {
+        private NonClosingStream(InputStream in) {
+            super(in);
+        }
+
+        @Override
+        public void close() throws IOException {
+            // Avoid closing ZIP file
+        }
+    }
+
+
+    public void addIncludedJsFile(IFile file) {
+        jsIncludes.add(file.getProjectRelativePath().makeRelative().toString());
+    }
 }