| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.debug.ui.launcher; | 5 package org.chromium.debug.ui.launcher; |
| 6 | 6 |
| 7 import java.util.ArrayList; | 7 import java.util.ArrayList; |
| 8 import java.util.Arrays; | 8 import java.util.Arrays; |
| 9 import java.util.Collections; | 9 import java.util.Collections; |
| 10 import java.util.LinkedHashMap; | 10 import java.util.LinkedHashMap; |
| 11 import java.util.List; | 11 import java.util.List; |
| 12 import java.util.Map; | 12 import java.util.Map; |
| 13 | 13 |
| 14 import org.chromium.debug.core.model.LaunchParams; | 14 import org.chromium.debug.core.model.LaunchParams; |
| 15 import org.chromium.debug.core.model.LaunchParams.ValueConverter; | 15 import org.chromium.debug.core.model.LaunchParams.ValueConverter; |
| 16 import org.chromium.debug.ui.PluginUtil; | 16 import org.chromium.debug.ui.PluginUtil; |
| 17 import org.chromium.debug.ui.launcher.LaunchTabGroup.Params; | 17 import org.chromium.debug.ui.launcher.LaunchTabGroup.Params; |
| 18 import org.chromium.sdk.wip.WipBackend; | 18 import org.chromium.sdk.wip.WipBackend; |
| 19 import org.chromium.sdk.wip.eclipse.BackendRegistry; | 19 import org.chromium.sdk.wip.eclipse.BackendRegistry; |
| 20 import org.eclipse.core.runtime.CoreException; | 20 import org.eclipse.core.runtime.CoreException; |
| 21 import org.eclipse.debug.core.ILaunchConfiguration; | 21 import org.eclipse.debug.core.ILaunchConfiguration; |
| 22 import org.eclipse.jface.preference.BooleanFieldEditor; | |
| 23 import org.eclipse.jface.preference.IntegerFieldEditor; | |
| 24 import org.eclipse.jface.preference.PreferenceStore; | 22 import org.eclipse.jface.preference.PreferenceStore; |
| 25 import org.eclipse.jface.preference.StringFieldEditor; | |
| 26 import org.eclipse.swt.SWT; | 23 import org.eclipse.swt.SWT; |
| 27 import org.eclipse.swt.events.SelectionEvent; | 24 import org.eclipse.swt.events.SelectionEvent; |
| 28 import org.eclipse.swt.events.SelectionListener; | 25 import org.eclipse.swt.events.SelectionListener; |
| 29 import org.eclipse.swt.graphics.Font; | 26 import org.eclipse.swt.graphics.Font; |
| 30 import org.eclipse.swt.layout.GridData; | 27 import org.eclipse.swt.layout.GridData; |
| 31 import org.eclipse.swt.layout.GridLayout; | 28 import org.eclipse.swt.layout.GridLayout; |
| 32 import org.eclipse.swt.widgets.Combo; | 29 import org.eclipse.swt.widgets.Combo; |
| 33 import org.eclipse.swt.widgets.Composite; | 30 import org.eclipse.swt.widgets.Composite; |
| 34 import org.eclipse.swt.widgets.Group; | 31 import org.eclipse.swt.widgets.Group; |
| 35 import org.eclipse.swt.widgets.Text; | 32 import org.eclipse.swt.widgets.Text; |
| 36 | 33 |
| 37 class WipRemoteTab extends ChromiumRemoteTab<WipRemoteTab.WipTabElements> { | 34 class WipRemoteTab extends ChromiumRemoteTab<WipRemoteTab.WipTabElements> { |
| 38 private final Map<String, WipBackend> backendMap; | 35 private final Map<String, WipBackend> backendMap; |
| 39 | 36 |
| 40 WipRemoteTab() { | 37 WipRemoteTab() { |
| 41 super(PARAMS); | 38 super(PARAMS); |
| 42 | 39 |
| 43 backendMap = new LinkedHashMap<String, WipBackend>(); | 40 backendMap = new LinkedHashMap<String, WipBackend>(); |
| 44 for (WipBackend b : BackendRegistry.INSTANCE.getBackends()) { | 41 for (WipBackend b : BackendRegistry.INSTANCE.getBackends()) { |
| 45 backendMap.put(b.getId(), b); | 42 backendMap.put(b.getId(), b); |
| 46 } | 43 } |
| 47 } | 44 } |
| 48 | 45 |
| 49 interface WipTabElements extends ChromiumRemoteTab.TabElements { | 46 interface WipTabElements { |
| 50 BackendSelectorControl getBackendSelector(); | 47 BackendSelectorControl getBackendSelector(); |
| 48 ChromiumRemoteTab.TabElements getBase(); |
| 51 } | 49 } |
| 52 | 50 |
| 53 @Override | 51 @Override |
| 54 protected String getWarning(ILaunchConfiguration config) throws CoreException
{ | 52 protected String getWarning(ILaunchConfiguration config) throws CoreException
{ |
| 55 String result = super.getWarning(config); | 53 String result = super.getWarning(config); |
| 56 if (result != null) { | 54 if (result != null) { |
| 57 return result; | 55 return result; |
| 58 } | 56 } |
| 59 String backendId = config.getAttribute(LaunchParams.WIP_BACKEND_ID, (String)
null); | 57 String backendId = config.getAttribute(LaunchParams.WIP_BACKEND_ID, (String)
null); |
| 60 if (backendId == null) { | 58 if (backendId == null) { |
| 61 return "Wip backend should be selected"; | 59 return "Wip backend should be selected"; |
| 62 } | 60 } |
| 63 if (backendMap.get(backendId) == null) { | 61 if (backendMap.get(backendId) == null) { |
| 64 return "Unknown Wip backend id"; | 62 return "Unknown Wip backend id"; |
| 65 } | 63 } |
| 66 return null; | 64 return null; |
| 67 } | 65 } |
| 68 | 66 |
| 69 @Override | 67 @Override |
| 70 protected WipTabElements createDialogElements(Composite composite, final Runna
ble modifyListener, | 68 protected WipTabElements createDialogElements(Composite composite, final Runna
ble modifyListener, |
| 71 PreferenceStore store) { | 69 PreferenceStore store) { |
| 72 final TabElements basicElements = | 70 final TabElements basicElements = |
| 73 createBasicTabElements(composite, modifyListener, store, getParams()); | 71 createBasicTabElements(composite, modifyListener, store, getParams()); |
| 74 | 72 |
| 75 final BackendSelectorControl backendSelector = | 73 final BackendSelectorControl backendSelector = |
| 76 new BackendSelectorControl(composite, backendMap, modifyListener); | 74 new BackendSelectorControl(composite, backendMap, modifyListener); |
| 77 backendSelector.getMainControl().setLayoutData(new GridData(GridData.FILL_HO
RIZONTAL)); | 75 backendSelector.getMainControl().setLayoutData(new GridData(GridData.FILL_HO
RIZONTAL)); |
| 78 | 76 |
| 79 return new WipTabElements() { | 77 return new WipTabElements() { |
| 80 @Override public StringFieldEditor getHost() { | |
| 81 return basicElements.getHost(); | |
| 82 } | |
| 83 @Override public IntegerFieldEditor getPort() { | |
| 84 return basicElements.getPort(); | |
| 85 } | |
| 86 @Override public BooleanFieldEditor getAddNetworkConsole() { | |
| 87 return basicElements.getAddNetworkConsole(); | |
| 88 } | |
| 89 @Override public RadioButtonsLogic<Integer> getBreakpointRadioButtons() { | |
| 90 return basicElements.getBreakpointRadioButtons(); | |
| 91 } | |
| 92 @Override public BackendSelectorControl getBackendSelector() { | 78 @Override public BackendSelectorControl getBackendSelector() { |
| 93 return backendSelector; | 79 return backendSelector; |
| 94 } | 80 } |
| 81 @Override |
| 82 public TabElements getBase() { |
| 83 return basicElements; |
| 84 } |
| 95 }; | 85 }; |
| 96 } | 86 } |
| 97 | 87 |
| 98 @Override | 88 @Override |
| 99 protected List<? extends TabField<?, ?, ? super WipTabElements, Params>> getTa
bFields() { | 89 protected TabFieldList<? super WipTabElements, ? super Params> getTabFields()
{ |
| 100 return WIP_TAB_FIELDS; | 90 return WIP_TAB_FIELDS; |
| 101 } | 91 } |
| 102 | 92 |
| 103 private static final List<? extends TabField<?, ?, ? super WipTabElements, Par
ams>> | 93 private static final TabFieldList<? super WipTabElements, ? super Params> |
| 104 WIP_TAB_FIELDS; | 94 WIP_TAB_FIELDS; |
| 105 static { | 95 static { |
| 106 List<TabField<?, ?, ? super WipTabElements, Params>> list = | 96 TabField<String, String, WipTabElements, Params> backendChooser = |
| 107 new ArrayList<TabField<?, ?, ? super WipTabElements, Params>>(5); | 97 new TabField<String, String, WipTabElements, Params>( |
| 108 | |
| 109 list.addAll(BASIC_TAB_FIELDS); | |
| 110 | |
| 111 list.add(new TabField<String, String, WipTabElements, Params>( | |
| 112 LaunchParams.WIP_BACKEND_ID, TypedMethods.STRING, | 98 LaunchParams.WIP_BACKEND_ID, TypedMethods.STRING, |
| 113 new FieldAccess<String, WipTabElements>() { | 99 new FieldAccess<String, WipTabElements>() { |
| 114 @Override void setValue(String value, WipTabElements tabElements) { | 100 @Override void setValue(String value, WipTabElements tabElements) { |
| 115 tabElements.getBackendSelector().setId(value); | 101 tabElements.getBackendSelector().setId(value); |
| 116 } | 102 } |
| 117 @Override String getValue(WipTabElements tabElements) { | 103 @Override String getValue(WipTabElements tabElements) { |
| 118 return tabElements.getBackendSelector().getId(); | 104 return tabElements.getBackendSelector().getId(); |
| 119 } | 105 } |
| 120 }, | 106 }, |
| 121 new DefaultsProvider<String, Params>() { | 107 new DefaultsProvider<String, Params>() { |
| 122 @Override String getFallbackValue() { | 108 @Override String getFallbackValue() { |
| 123 // TODO: support default value from eclipse variables. | 109 // TODO: support default value from eclipse variables. |
| 124 return null; | 110 return null; |
| 125 } | 111 } |
| 126 @Override String getInitialConfigValue(Params context) { | 112 @Override String getInitialConfigValue(Params context) { |
| 127 // TODO: support default value from eclipse variables. | 113 // TODO: support default value from eclipse variables. |
| 128 return null; | 114 return null; |
| 129 } | 115 } |
| 130 }, | 116 }, |
| 131 ValueConverter.<String>getTrivial())); | 117 ValueConverter.<String>getTrivial()); |
| 132 | 118 |
| 133 WIP_TAB_FIELDS = Collections.unmodifiableList(list); | 119 List<TabFieldList<? super WipTabElements, ? super Params>> list = |
| 120 new ArrayList<TabFieldList<? super WipTabElements, ? super Params>>(2); |
| 121 list.add(createFieldListAdapting(BASIC_TAB_FIELDS, |
| 122 new Adapter<WipTabElements, TabElements>() { |
| 123 @Override |
| 124 public TabElements get(WipTabElements from) { |
| 125 return from.getBase(); |
| 126 } |
| 127 })); |
| 128 list.add(createFieldListImpl(Collections.singletonList(backendChooser))); |
| 129 |
| 130 WIP_TAB_FIELDS = createCompositeFieldList(list); |
| 134 } | 131 } |
| 135 | 132 |
| 136 private static final Params PARAMS = new Params(HostChecker.LOCAL_ONLY, | 133 private static final Params PARAMS = new Params(HostChecker.LOCAL_ONLY, |
| 137 Messages.ChromiumRemoteTab_URL, false); | 134 Messages.ChromiumRemoteTab_URL, false); |
| 138 | 135 |
| 139 /** | 136 /** |
| 140 * UI control elements that allows to choose {@link WipBackend}. It consists o
f a dialog group, | 137 * UI control elements that allows to choose {@link WipBackend}. It consists o
f a dialog group, |
| 141 * that contains a drop-down list with backend ids and a multiline text field
with backend | 138 * that contains a drop-down list with backend ids and a multiline text field
with backend |
| 142 * description. | 139 * description. |
| 143 */ | 140 */ |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 224 textContent = backend.getDescription(); | 221 textContent = backend.getDescription(); |
| 225 } | 222 } |
| 226 text.setText(textContent); | 223 text.setText(textContent); |
| 227 } | 224 } |
| 228 | 225 |
| 229 Group getMainControl() { | 226 Group getMainControl() { |
| 230 return mainControl; | 227 return mainControl; |
| 231 } | 228 } |
| 232 } | 229 } |
| 233 } | 230 } |
| OLD | NEW |