org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/WizardContext.java
changeset 467 5a2901872fcf
parent 466 129c94e78375
equal deleted inserted replaced
466:129c94e78375 467:5a2901872fcf
     1 package org.symbian.tools.tmw.internal.ui.wizard;
     1 package org.symbian.tools.tmw.internal.ui.wizard;
     2 
     2 
     3 import java.beans.PropertyChangeListener;
     3 import java.beans.PropertyChangeListener;
     4 import java.beans.PropertyChangeSupport;
     4 import java.beans.PropertyChangeSupport;
       
     5 import java.io.FilterInputStream;
       
     6 import java.io.IOException;
     5 import java.io.InputStream;
     7 import java.io.InputStream;
     6 import java.text.MessageFormat;
     8 import java.text.MessageFormat;
       
     9 import java.util.Collection;
     7 import java.util.Map;
    10 import java.util.Map;
     8 import java.util.Set;
    11 import java.util.Set;
     9 import java.util.TreeMap;
    12 import java.util.TreeMap;
       
    13 import java.util.TreeSet;
    10 
    14 
    11 import org.eclipse.core.databinding.DataBindingContext;
    15 import org.eclipse.core.databinding.DataBindingContext;
    12 import org.eclipse.core.databinding.UpdateValueStrategy;
    16 import org.eclipse.core.databinding.UpdateValueStrategy;
    13 import org.eclipse.core.databinding.beans.BeansObservables;
    17 import org.eclipse.core.databinding.beans.BeansObservables;
    14 import org.eclipse.core.databinding.observable.Observables;
       
    15 import org.eclipse.core.databinding.observable.map.IObservableMap;
       
    16 import org.eclipse.core.databinding.observable.value.AbstractObservableValue;
    18 import org.eclipse.core.databinding.observable.value.AbstractObservableValue;
    17 import org.eclipse.core.databinding.observable.value.IObservableValue;
    19 import org.eclipse.core.databinding.observable.value.IObservableValue;
    18 import org.eclipse.core.databinding.observable.value.ValueDiff;
    20 import org.eclipse.core.databinding.observable.value.ValueDiff;
    19 import org.eclipse.core.databinding.validation.IValidator;
    21 import org.eclipse.core.databinding.validation.IValidator;
    20 import org.eclipse.core.resources.IContainer;
    22 import org.eclipse.core.resources.IContainer;
    29 import org.eclipse.jface.databinding.swt.ISWTObservableValue;
    31 import org.eclipse.jface.databinding.swt.ISWTObservableValue;
    30 import org.eclipse.jface.databinding.swt.SWTObservables;
    32 import org.eclipse.jface.databinding.swt.SWTObservables;
    31 import org.eclipse.swt.SWT;
    33 import org.eclipse.swt.SWT;
    32 import org.eclipse.swt.layout.GridData;
    34 import org.eclipse.swt.layout.GridData;
    33 import org.eclipse.swt.widgets.Composite;
    35 import org.eclipse.swt.widgets.Composite;
    34 import org.eclipse.swt.widgets.Label;
       
    35 import org.eclipse.swt.widgets.Text;
    36 import org.eclipse.swt.widgets.Text;
    36 import org.symbian.tools.tmw.core.TMWCore;
    37 import org.symbian.tools.tmw.core.TMWCore;
    37 import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntime;
    38 import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntime;
    38 import org.symbian.tools.tmw.internal.util.Util;
    39 import org.symbian.tools.tmw.internal.util.Util;
    39 import org.symbian.tools.tmw.ui.TMWCoreUI;
    40 import org.symbian.tools.tmw.ui.TMWCoreUI;
    56     private IProjectTemplate template = null;
    57     private IProjectTemplate template = null;
    57 
    58 
    58     private String widgetId;
    59     private String widgetId;
    59 
    60 
    60     private String widgetName;
    61     private String widgetName;
       
    62     private final Collection<String> jsIncludes = new TreeSet<String>();
    61 
    63 
    62     public WizardContext() {
    64     public WizardContext() {
    63         IMobileWebRuntime[] runtimes = TMWCore.getRuntimesManager().getAllRuntimes();
    65         IMobileWebRuntime[] runtimes = TMWCore.getRuntimesManager().getAllRuntimes();
    64         if (runtimes.length > 0) {
    66         if (runtimes.length > 0) {
    65             runtime = runtimes[0];
    67             runtime = runtimes[0];
    71         monitor.beginTask(name.toOSString(), 100);
    73         monitor.beginTask(name.toOSString(), 100);
    72         final IFile file = project.getFile(name);
    74         final IFile file = project.getFile(name);
    73         if (!file.exists()) {
    75         if (!file.exists()) {
    74             create(file.getParent());
    76             create(file.getParent());
    75         }
    77         }
    76         file.create(contents, false, new SubProgressMonitor(monitor, 100));
    78         file.create(new NonClosingStream(contents), false, new SubProgressMonitor(monitor, 100));
    77         monitor.done();
    79         monitor.done();
    78         return file;
    80         return file;
    79     }
    81     }
    80 
    82 
    81     public void addPropertyChangeListener(PropertyChangeListener arg0) {
    83     public void addPropertyChangeListener(PropertyChangeListener arg0) {
    89     private void create(IContainer parent) throws CoreException {
    91     private void create(IContainer parent) throws CoreException {
    90         if (!parent.exists() && parent instanceof IFolder) {
    92         if (!parent.exists() && parent instanceof IFolder) {
    91             create(parent.getParent());
    93             create(parent.getParent());
    92             ((IFolder) parent).create(false, true, new NullProgressMonitor());
    94             ((IFolder) parent).create(false, true, new NullProgressMonitor());
    93         }
    95         }
    94     }
       
    95 
       
    96     protected void createLabel(Composite root, String text) {
       
    97         Label label = new Label(root, SWT.NONE);
       
    98         label.setText(text);
       
    99     }
    96     }
   100 
    97 
   101     private Text createText(Composite root, IObservableValue model, String propertyName,
    98     private Text createText(Composite root, IObservableValue model, String propertyName,
   102             DataBindingContext bindingContext, AbstractDataBindingPage page, IValidator... validators) {
    99             DataBindingContext bindingContext, AbstractDataBindingPage page, IValidator... validators) {
   103         Text text = new Text(root, SWT.BORDER);
   100         Text text = new Text(root, SWT.BORDER);
   115             AbstractDataBindingPage page, IValidator... validators) {
   112             AbstractDataBindingPage page, IValidator... validators) {
   116         return createText(root, BeansObservables.observeValue(this, property), propertyName, bindingContext, page,
   113         return createText(root, BeansObservables.observeValue(this, property), propertyName, bindingContext, page,
   117                 validators);
   114                 validators);
   118     }
   115     }
   119 
   116 
   120     protected Text createTextForExt(Composite root, String property, String propertyName,
       
   121             DataBindingContext bindingContext, AbstractDataBindingPage page) {
       
   122         IObservableMap map = BeansObservables.observeMap(this, "extensions");
       
   123         IObservableValue entry = Observables.observeMapEntry(map, property, String.class);
       
   124         return createText(root, entry, propertyName, bindingContext, page);
       
   125     }
       
   126 
       
   127     private IProjectTemplate getDefaultTemplate(IMobileWebRuntime runtime) {
   117     private IProjectTemplate getDefaultTemplate(IMobileWebRuntime runtime) {
   128         return TMWCoreUI.getProjectTemplateManager().getDefaultTemplate(runtime);
   118         return TMWCoreUI.getProjectTemplateManager().getDefaultTemplate(runtime);
   129     }
   119     }
   130 
   120 
   131     private String getDefaultWidgetId() {
   121     private String getDefaultWidgetId() {
   185             vars.putAll(t.getDefaultParameterValues());
   175             vars.putAll(t.getDefaultParameterValues());
   186         }
   176         }
   187 
   177 
   188         vars.put("widgetName", getWidgetName());
   178         vars.put("widgetName", getWidgetName());
   189         vars.put("widgetId", getWidgetId());
   179         vars.put("widgetId", getWidgetId());
       
   180         vars.put("jsIncludes", jsIncludes);
   190         vars.putAll(extensions);
   181         vars.putAll(extensions);
   191 
   182 
   192         return vars;
   183         return vars;
   193     }
   184     }
   194 
   185 
   318                     return value;
   309                     return value;
   319                 }
   310                 }
   320             });
   311             });
   321         }
   312         }
   322     }
   313     }
       
   314 
       
   315     private static final class NonClosingStream extends FilterInputStream {
       
   316         private NonClosingStream(InputStream in) {
       
   317             super(in);
       
   318         }
       
   319 
       
   320         @Override
       
   321         public void close() throws IOException {
       
   322             // Avoid closing ZIP file
       
   323         }
       
   324     }
       
   325 
       
   326 
       
   327     public void addIncludedJsFile(IFile file) {
       
   328         jsIncludes.add(file.getProjectRelativePath().makeRelative().toString());
       
   329     }
   323 }
   330 }