Index: plugins/org.chromium.debug.ui/src/org/chromium/debug/ui/liveedit/WizardLogicBuilder.java |
diff --git a/plugins/org.chromium.debug.ui/src/org/chromium/debug/ui/liveedit/WizardLogicBuilder.java b/plugins/org.chromium.debug.ui/src/org/chromium/debug/ui/liveedit/WizardLogicBuilder.java |
index ba12770f94bd746e66155fc1169d42bdb40c4f48..9d54d18b57c244cd182d122e90b542ee7a3aa539 100644 |
--- a/plugins/org.chromium.debug.ui/src/org/chromium/debug/ui/liveedit/WizardLogicBuilder.java |
+++ b/plugins/org.chromium.debug.ui/src/org/chromium/debug/ui/liveedit/WizardLogicBuilder.java |
@@ -4,29 +4,14 @@ |
package org.chromium.debug.ui.liveedit; |
-import static org.chromium.debug.ui.DialogUtils.createConstant; |
-import static org.chromium.debug.ui.DialogUtils.createErrorOptional; |
-import static org.chromium.debug.ui.DialogUtils.createOptional; |
-import static org.chromium.debug.ui.DialogUtils.createOptionalProcessor; |
-import static org.chromium.debug.ui.DialogUtils.createProcessor; |
-import static org.chromium.debug.ui.DialogUtils.dependencies; |
-import static org.chromium.debug.ui.DialogUtils.handleErrors; |
-import static org.chromium.debug.ui.DialogUtils.handleErrorsAddNew; |
+import static org.chromium.debug.ui.DialogUtils.*; |
import java.util.List; |
import org.chromium.debug.core.ChromiumDebugPlugin; |
import org.chromium.debug.core.util.ScriptTargetMapping; |
-import org.chromium.debug.ui.DialogUtils.Gettable; |
-import org.chromium.debug.ui.DialogUtils.Message; |
-import org.chromium.debug.ui.DialogUtils.MessagePriority; |
-import org.chromium.debug.ui.DialogUtils.NormalExpression; |
+import org.chromium.debug.ui.DialogUtils.*; |
import org.chromium.debug.ui.DialogUtils.Optional; |
-import org.chromium.debug.ui.DialogUtils.OptionalSwitcher; |
-import org.chromium.debug.ui.DialogUtils.Scope; |
-import org.chromium.debug.ui.DialogUtils.ScopeEnabler; |
-import org.chromium.debug.ui.DialogUtils.Updater; |
-import org.chromium.debug.ui.DialogUtils.ValueConsumer; |
import org.chromium.debug.ui.DialogUtils.ValueProcessor; |
import org.chromium.debug.ui.DialogUtils.ValueSource; |
import org.chromium.debug.ui.WizardUtils.LogicBasedWizard; |
@@ -40,6 +25,7 @@ import org.chromium.debug.ui.WizardUtils.WizardLogic; |
import org.chromium.debug.ui.actions.ChooseVmControl; |
import org.chromium.debug.ui.actions.CompareChangesAction; |
import org.chromium.debug.ui.liveedit.PushChangesWizard.FinisherDelegate; |
+import org.chromium.sdk.UpdatableScript; |
import org.chromium.sdk.UpdatableScript.ChangeDescription; |
import org.eclipse.compare.structuremergeviewer.DiffNode; |
import org.eclipse.core.runtime.NullProgressMonitor; |
@@ -118,13 +104,17 @@ class WizardLogicBuilder { |
// A condition value for up-coming fork between 'single vm' and 'multiple vm' paths. |
- Gettable<? extends Optional<Boolean>> singleVmSelectedExpression = handleErrors( |
+ Gettable<? extends Optional<? extends Boolean>> singleVmSelectedExpression = handleErrors( |
new NormalExpression<Boolean>() { |
- public Boolean calculate() { |
- return selectedVmValue.getValue().getNormal().size() == 1; |
+ @Calculate |
+ public Boolean calculate(List<ScriptTargetMapping> selectedVm) { |
+ return selectedVm.size() == 1; |
} |
- }, |
- dependencies(selectedVmValue)); |
+ @DependencyGetter |
+ public ValueSource<? extends Optional<List<ScriptTargetMapping>>> getSelectVmSource() { |
+ return selectedVmValue; |
+ } |
+ }); |
// A switch between 2 paths: 'single vm' and 'multiple vm'. |
OptionalSwitcher<Boolean> singleVmSelectedSwitch = |
@@ -140,20 +130,24 @@ class WizardLogicBuilder { |
singleVmSelectedSwitch.createOptionalMerge(singleVmPath.getFinisherDelegateValue(), |
multipleVmPath.getFinisherDelegateValue()); |
- ValueSource<? extends Optional<Void>> warningValue = |
+ ValueSource<? extends Optional<? extends Void>> warningValue = |
singleVmSelectedSwitch.createOptionalMerge(singleVmPath.getWarningValue(), |
multipleVmPath.getWarningValue()); |
// A simple value converter that wraps wizard delegate as UI-aware wizard finisher. |
- ValueProcessor<Optional<WizardFinisher>> finisherValue = |
- createOptionalProcessor(new NormalExpression<WizardFinisher>() { |
- public WizardFinisher calculate() { |
- return new PushChangesWizard.FinisherImpl( |
- wizardFinisherDelegateValue.getValue().getNormal()); |
+ ValueProcessor<Optional<? extends WizardFinisher>> finisherValue = |
+ createProcessor(handleErrors(new NormalExpression<WizardFinisher>() { |
+ @Calculate |
+ public WizardFinisher calculate(FinisherDelegate finisherDelegate) { |
+ return new PushChangesWizard.FinisherImpl(finisherDelegate); |
+ } |
+ @DependencyGetter |
+ public ValueSource<? extends Optional<? extends FinisherDelegate>> |
+ getWizardFinisherDelegateSource() { |
+ return wizardFinisherDelegateValue; |
} |
- }, |
- dependencies(wizardFinisherDelegateValue)); |
+ })); |
updater.addConsumer(scope, finisherValue); |
updater.addSource(scope, finisherValue); |
updater.addDependency(finisherValue, wizardFinisherDelegateValue); |
@@ -184,7 +178,7 @@ class WizardLogicBuilder { |
* return additional warning messages. |
*/ |
private interface PreviewAndOptionPath { |
- ValueSource<? extends Optional<FinisherDelegate>> getFinisherDelegateValue(); |
+ ValueSource<? extends Optional<? extends FinisherDelegate>> getFinisherDelegateValue(); |
ValueSource<Optional<Void>> getWarningValue(); |
} |
@@ -248,30 +242,39 @@ class WizardLogicBuilder { |
// Parses raw preview value and converts it into a form suitable for the viewer; also handles |
// errors that become warnings. |
- final ValueProcessor<Optional<LiveEditDiffViewer.Input>> previewValue = |
- createProcessor(handleErrorsAddNew( |
- new NormalExpression<Optional<LiveEditDiffViewer.Input>>() { |
- public Optional<LiveEditDiffViewer.Input> calculate() { |
- ScriptTargetMapping filePair = singleVmValue.getValue(); |
- ChangeDescription changeDescription = previewRawResultValue.getValue().getNormal(); |
- Optional<LiveEditDiffViewer.Input> result; |
- if (changeDescription == null) { |
- result = createOptional(null); |
- } else { |
- try { |
- LiveEditDiffViewer.Input viewerInput = |
- PushResultParser.createViewerInput(changeDescription, filePair, true); |
- result = createOptional(viewerInput); |
- } catch (RuntimeException e) { |
- ChromiumDebugPlugin.log(e); |
- result = createErrorOptional(new Message( |
- "Error in getting preview: " + e.toString(), MessagePriority.WARNING)); |
+ final ValueProcessor<Optional<? extends LiveEditDiffViewer.Input>> previewValue = |
+ createProcessor(handleErrors( |
+ new NormalExpression<LiveEditDiffViewer.Input>() { |
+ @Calculate |
+ public Optional<? extends LiveEditDiffViewer.Input> calculate( |
+ ChangeDescription previewRawResultParam) { |
+ ScriptTargetMapping filePair = singleVmValue.getValue(); |
+ ChangeDescription changeDescription = previewRawResultParam; |
+ Optional<LiveEditDiffViewer.Input> result; |
+ if (changeDescription == null) { |
+ result = createOptional(null); |
+ } else { |
+ try { |
+ LiveEditDiffViewer.Input viewerInput = |
+ PushResultParser.createViewerInput(changeDescription, filePair, true); |
+ result = createOptional(viewerInput); |
+ } catch (RuntimeException e) { |
+ ChromiumDebugPlugin.log(e); |
+ result = createErrorOptional(new Message( |
+ "Error in getting preview: " + e.toString(), MessagePriority.WARNING)); |
+ } |
} |
+ return result; |
} |
- return result; |
- } |
- }, |
- dependencies(previewRawResultValue))); |
+ @DependencyGetter |
+ public ValueSource<Optional<UpdatableScript.ChangeDescription>> |
+ previewRawResultValueSource() { |
+ return previewRawResultValue; |
+ } |
+ })); |
+ |
+ |
+ |
updater.addConsumer(scope, previewValue); |
updater.addSource(scope, previewValue); |
updater.addDependency(previewValue, previewRawResultValue); |
@@ -280,7 +283,7 @@ class WizardLogicBuilder { |
// A simple consumer that sets preview data to the viewer. |
ValueConsumer v8PreviewInputSetter = new ValueConsumer() { |
public void update(Updater updater) { |
- Optional<LiveEditDiffViewer.Input> previewOptional = previewValue.getValue(); |
+ Optional<? extends LiveEditDiffViewer.Input> previewOptional = previewValue.getValue(); |
LiveEditDiffViewer.Input viewerInput; |
if (previewOptional.isNormal()) { |
viewerInput = previewOptional.getNormal(); |
@@ -350,12 +353,18 @@ class WizardLogicBuilder { |
Scope scope = switcher.addScope(Boolean.FALSE, scopeEnabler); |
- final ValueProcessor<? extends Optional<FinisherDelegate>> wizardFinisher = |
+ final ValueProcessor<Optional<? extends FinisherDelegate>> wizardFinisher = |
createProcessor(handleErrors(new NormalExpression<FinisherDelegate>() { |
- public FinisherDelegate calculate() { |
+ @Calculate |
+ public FinisherDelegate calculate(List<ScriptTargetMapping> selectedVm) { |
return new PushChangesWizard.MultipleVmFinisher(selectedVmValue.getValue().getNormal()); |
} |
- }, dependencies(selectedVmValue))); |
+ @DependencyGetter |
+ public ValueSource<? extends Optional<? extends List<ScriptTargetMapping>>> |
+ getSelectVmSource() { |
+ return selectedVmValue; |
+ } |
+ })); |
updater.addSource(scope, wizardFinisher); |
updater.addConsumer(scope, wizardFinisher); |
updater.addDependency(wizardFinisher, selectedVmValue); |
@@ -364,7 +373,8 @@ class WizardLogicBuilder { |
createConstant(createOptional((Void) null), updater); |
return new PreviewAndOptionPath() { |
- public ValueSource<? extends Optional<FinisherDelegate>> getFinisherDelegateValue() { |
+ public ValueSource<? extends Optional<? extends FinisherDelegate>> |
+ getFinisherDelegateValue() { |
return wizardFinisher; |
} |
public ValueSource<Optional<Void>> getWarningValue() { |