diff options
author | i053061 | 2012-12-21 16:06:09 +0000 |
---|---|---|
committer | i053061 | 2012-12-21 16:06:09 +0000 |
commit | d8b0004e157f2b19d3d7b20378b76f0b96b380f9 (patch) | |
tree | 967703dbede99a5d48d570d823ed2056ed59277a | |
parent | cd6f64fdfa11eac8d8aeb0b8a6ed4abb9887beb0 (diff) | |
download | org.eclipse.e4.search-d8b0004e157f2b19d3d7b20378b76f0b96b380f9.tar.gz org.eclipse.e4.search-d8b0004e157f2b19d3d7b20378b76f0b96b380f9.tar.xz org.eclipse.e4.search-d8b0004e157f2b19d3d7b20378b76f0b96b380f9.zip |
[Bug 396928] presenter WIP
- edit and delete
- refresh input on success
5 files changed, 87 insertions, 16 deletions
diff --git a/bundles/org.eclipse.platform.discovery.destprefs/src/org/eclipse/platform/discovery/destprefs/internal/prefpage/ui/DestinationConfiguratorsPresenter.java b/bundles/org.eclipse.platform.discovery.destprefs/src/org/eclipse/platform/discovery/destprefs/internal/prefpage/ui/DestinationConfiguratorsPresenter.java index 2372ed9..1195ae0 100644 --- a/bundles/org.eclipse.platform.discovery.destprefs/src/org/eclipse/platform/discovery/destprefs/internal/prefpage/ui/DestinationConfiguratorsPresenter.java +++ b/bundles/org.eclipse.platform.discovery.destprefs/src/org/eclipse/platform/discovery/destprefs/internal/prefpage/ui/DestinationConfiguratorsPresenter.java @@ -87,10 +87,17 @@ public class DestinationConfiguratorsPresenter implements IDestinationConfigurat @Override
public void addDestination() {
- ISearchDestinationsConfiguratorDescription configDescription = getConfigDescription(destinationProviderId);
- ISearchDestinationConfigurator<?> configurator = configDescription.createConfigurator();
+ ContractChecker.nullCheckField(destinationProviderId, "destinationProviderId");
+ ISearchDestinationConfigurator<?> configurator = getConfigDescription(destinationProviderId).createConfigurator();
IStatus result = configurator.createDestination(view.getShell());
+ updateView(result);
+ }
+
+ private void updateView(IStatus result) {
view.setStatus(result);
+ if(result.isOK()) {
+ view.setInput(buildInput());
+ }
}
private ISearchDestinationsConfiguratorDescription getConfigDescription(String destinationProviderId) {
@@ -103,21 +110,29 @@ public class DestinationConfiguratorsPresenter implements IDestinationConfigurat }
@Override
- public void editDestination() {
- // TODO Auto-generated method stub
+ public <T extends ISearchDestination> void editDestination() {
+ ContractChecker.nullCheckField(destinationProviderId, "destinationProviderId");
+ ContractChecker.nullCheckField(destination, "destination");
+
+ ISearchDestinationConfigurator<T> configurator = getConfigDescription(destinationProviderId).createConfigurator();
+ @SuppressWarnings("unchecked") IStatus result = configurator.editDestination(view.getShell(), (T)destination);
+ updateView(result);
}
@Override
- public void removeDestination() {
- // TODO Auto-generated method stub
+ public <T extends ISearchDestination> void removeDestination() {
+ ContractChecker.nullCheckField(destinationProviderId, "destinationProviderId");
+ ContractChecker.nullCheckField(destination, "destination");
+ ISearchDestinationConfigurator<T> configurator = getConfigDescription(destinationProviderId).createConfigurator();
+ @SuppressWarnings("unchecked") IStatus result = configurator.deleteDestination(view.getShell(), (T)destination);
+ updateView(result);
}
@Override
public void testDestination() {
- // TODO Auto-generated method stub
-
+ throw new RuntimeException("not implemented");
}
}
diff --git a/bundles/org.eclipse.platform.discovery.destprefs/src/org/eclipse/platform/discovery/destprefs/internal/prefpage/ui/IDestinationConfiguratorsPresenter.java b/bundles/org.eclipse.platform.discovery.destprefs/src/org/eclipse/platform/discovery/destprefs/internal/prefpage/ui/IDestinationConfiguratorsPresenter.java index 9b54729..6a1cfc0 100644 --- a/bundles/org.eclipse.platform.discovery.destprefs/src/org/eclipse/platform/discovery/destprefs/internal/prefpage/ui/IDestinationConfiguratorsPresenter.java +++ b/bundles/org.eclipse.platform.discovery.destprefs/src/org/eclipse/platform/discovery/destprefs/internal/prefpage/ui/IDestinationConfiguratorsPresenter.java @@ -1,10 +1,12 @@ package org.eclipse.platform.discovery.destprefs.internal.prefpage.ui; +import org.eclipse.platform.discovery.runtime.api.ISearchDestination; + public interface IDestinationConfiguratorsPresenter { public void selectionChanged(final DestinationConfiguratorSelection selection); public void addDestination(); - public void editDestination(); - public void removeDestination(); - public void testDestination(); + public <T extends ISearchDestination> void editDestination(); + public <T extends ISearchDestination> void removeDestination(); + public <T extends ISearchDestination> void testDestination(); public void setView(final IDestinationConfiguratorsView view); } diff --git a/bundles/org.eclipse.platform.discovery.destprefs/src/org/eclipse/platform/discovery/destprefs/internal/xpparser/ISearchDestinationsConfiguratorDescription.java b/bundles/org.eclipse.platform.discovery.destprefs/src/org/eclipse/platform/discovery/destprefs/internal/xpparser/ISearchDestinationsConfiguratorDescription.java index d35b8f7..a81366b 100644 --- a/bundles/org.eclipse.platform.discovery.destprefs/src/org/eclipse/platform/discovery/destprefs/internal/xpparser/ISearchDestinationsConfiguratorDescription.java +++ b/bundles/org.eclipse.platform.discovery.destprefs/src/org/eclipse/platform/discovery/destprefs/internal/xpparser/ISearchDestinationsConfiguratorDescription.java @@ -11,6 +11,7 @@ package org.eclipse.platform.discovery.destprefs.internal.xpparser; import org.eclipse.platform.discovery.destprefs.api.ISearchDestinationConfigurator; +import org.eclipse.platform.discovery.runtime.api.ISearchDestination; /** * Wrapper interface for {@link ISearchDestinationConfigurator} @@ -18,7 +19,7 @@ import org.eclipse.platform.discovery.destprefs.api.ISearchDestinationConfigurat * */ public interface ISearchDestinationsConfiguratorDescription { - public ISearchDestinationConfigurator<?> createConfigurator(); + public <T extends ISearchDestination> ISearchDestinationConfigurator<T> createConfigurator(); public String destinationProviderId(); public String destinationCategoryId(); } diff --git a/tests/org.eclipse.platform.discovery.destprefs.test.unit/src/org/eclipse/platform/discovery/destprefs/test/unit/SearchConfiguratorsFixture.java b/tests/org.eclipse.platform.discovery.destprefs.test.unit/src/org/eclipse/platform/discovery/destprefs/test/unit/SearchConfiguratorsFixture.java index 3213d2e..ce62534 100644 --- a/tests/org.eclipse.platform.discovery.destprefs.test.unit/src/org/eclipse/platform/discovery/destprefs/test/unit/SearchConfiguratorsFixture.java +++ b/tests/org.eclipse.platform.discovery.destprefs.test.unit/src/org/eclipse/platform/discovery/destprefs/test/unit/SearchConfiguratorsFixture.java @@ -36,11 +36,11 @@ public class SearchConfiguratorsFixture { public final String CONFIGURATOR_2_FQNAME = "org.eclipse.platform.discovery.destprefs.configurator_2";
@Mock
- public ISearchDestinationConfigurator<?> configurator_1_1;
+ public ISearchDestinationConfigurator<ISearchDestination> configurator_1_1;
@Mock
- public ISearchDestinationConfigurator<?> configurator_1_2;
+ public ISearchDestinationConfigurator<ISearchDestination> configurator_1_2;
@Mock
- public ISearchDestinationConfigurator<?> configurator_2;
+ public ISearchDestinationConfigurator<ISearchDestination> configurator_2;
@Mock
public ISearchProviderConfiguration searchProviderConfiguration;
@Mock
diff --git a/tests/org.eclipse.platform.discovery.destprefs.test.unit/src/org/eclipse/platform/discovery/destprefs/test/unit/prefpage/DestinationConfiguratorsPresenterTest.java b/tests/org.eclipse.platform.discovery.destprefs.test.unit/src/org/eclipse/platform/discovery/destprefs/test/unit/prefpage/DestinationConfiguratorsPresenterTest.java index be1c790..388b23d 100644 --- a/tests/org.eclipse.platform.discovery.destprefs.test.unit/src/org/eclipse/platform/discovery/destprefs/test/unit/prefpage/DestinationConfiguratorsPresenterTest.java +++ b/tests/org.eclipse.platform.discovery.destprefs.test.unit/src/org/eclipse/platform/discovery/destprefs/test/unit/prefpage/DestinationConfiguratorsPresenterTest.java @@ -13,6 +13,7 @@ import org.eclipse.platform.discovery.destprefs.internal.prefpage.ui.Destination import org.eclipse.platform.discovery.destprefs.internal.prefpage.ui.IDestinationConfiguratorsView;
import org.eclipse.platform.discovery.destprefs.internal.xpparser.SearchDestinationsConfiguratorXPParser;
import org.eclipse.platform.discovery.destprefs.test.unit.SearchConfiguratorsFixture;
+import org.eclipse.platform.discovery.runtime.api.ISearchDestination;
import org.eclipse.platform.discovery.runtime.internal.ISearchProviderConfiguration;
import org.eclipse.platform.discovery.testutils.utils.registry.ExtensionRegistryBuilder;
import org.eclipse.swt.widgets.Shell;
@@ -60,6 +61,7 @@ public class DestinationConfiguratorsPresenterTest { private Collection<CategoryDestinationProviderPair> actual;
+ @SuppressWarnings("unchecked")
@Override
public boolean matches(Object item) {
actual = (Collection<CategoryDestinationProviderPair>)item;
@@ -95,7 +97,7 @@ public class DestinationConfiguratorsPresenterTest { }
@Test
- public void destinationSelectedThenAdd() {
+ public void add() {
presenter.selectionChanged(new DestinationConfiguratorSelection(fixture.DEST_PROVIDER_CAT1_1, fixture.destination1));
ISearchDestinationConfigurator<?> expectedConfigurator = fixture.configurator_1_1;
@@ -106,6 +108,24 @@ public class DestinationConfiguratorsPresenterTest { Mockito.verify(expectedConfigurator).createDestination(Mockito.same(viewShell));
Mockito.verify(view).setStatus(Mockito.same(result));
+ Mockito.verify(view, Mockito.times(2)).setInput(Mockito.argThat(matchesFixture()));
+
+ }
+
+ @Test
+ public void addNotOkDoesNotSetInput() {
+ presenter.selectionChanged(new DestinationConfiguratorSelection(fixture.DEST_PROVIDER_CAT1_1, fixture.destination1));
+
+ ISearchDestinationConfigurator<?> expectedConfigurator = fixture.configurator_1_1;
+ IStatus result = Status.CANCEL_STATUS;
+ Mockito.when(expectedConfigurator.createDestination(Mockito.same(viewShell))).thenReturn(result);
+
+ presenter.addDestination();
+
+ Mockito.verify(expectedConfigurator).createDestination(Mockito.same(viewShell));
+ Mockito.verify(view).setStatus(Mockito.same(result));
+ Mockito.verify(view, Mockito.times(1)).setInput(Mockito.argThat(matchesFixture()));
+
}
@Test
@@ -118,4 +138,37 @@ public class DestinationConfiguratorsPresenterTest { Mockito.verify(view).setTestEnabled(Mockito.eq(false));
}
+
+ @Test
+ public void edit() {
+ presenter.selectionChanged(new DestinationConfiguratorSelection(fixture.DEST_PROVIDER_CAT1_1, fixture.destination1));
+
+ ISearchDestinationConfigurator<ISearchDestination> expectedConfigurator = fixture.configurator_1_1;
+ IStatus result = Status.OK_STATUS;
+ Mockito.when(expectedConfigurator.editDestination(Mockito.same(viewShell), Mockito.same(fixture.destination1))).thenReturn(result);
+
+ presenter.editDestination();
+
+ Mockito.verify(expectedConfigurator).editDestination(Mockito.same(viewShell), Mockito.same(fixture.destination1));
+ Mockito.verify(view).setStatus(Mockito.same(result));
+ Mockito.verify(view, Mockito.times(2)).setInput(Mockito.argThat(matchesFixture()));
+
+ }
+
+ @Test
+ public void remove() {
+ presenter.selectionChanged(new DestinationConfiguratorSelection(fixture.DEST_PROVIDER_CAT1_1, fixture.destination1));
+
+ ISearchDestinationConfigurator<ISearchDestination> expectedConfigurator = fixture.configurator_1_1;
+ IStatus result = Status.OK_STATUS;
+ Mockito.when(expectedConfigurator.deleteDestination(Mockito.same(viewShell), Mockito.same(fixture.destination1))).thenReturn(result);
+
+ presenter.removeDestination();
+
+ Mockito.verify(expectedConfigurator).deleteDestination(Mockito.same(viewShell), Mockito.same(fixture.destination1));
+ Mockito.verify(view).setStatus(Mockito.same(result));
+ Mockito.verify(view, Mockito.times(2)).setInput(Mockito.argThat(matchesFixture()));
+
+ }
+
}
|