mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-28 14:57:12 +00:00
Implemented the ComponentLifecycle interface for perspectives
This commit is contained in:
1 parent
0fad13cbec
commit
7e75ef90a9
43 files changed
+1166
-428
No files matched your search
+32
@@ -0,0 +1,32 @@
|
||||
package com.sap.sse.gwt.client.shared.components;
|
||||
|
||||
import com.sap.sse.common.settings.Settings;
|
||||
|
||||
public class ComponentConstructionParameters<C extends Component<SettingsType>, SettingsType extends Settings, SDC extends SettingsDialogComponent<SettingsType>, CCA extends ComponentConstructorArgs<C, SettingsType>> {
|
||||
private final ComponentLifecycle<C, SettingsType, SDC, CCA> componentLifecycle;
|
||||
private final CCA componentConstructorArgs;
|
||||
private final SettingsType settings;
|
||||
|
||||
public ComponentConstructionParameters(ComponentLifecycle<C, SettingsType, SDC, CCA> componentLifecycle,
|
||||
CCA componentConstructorArgs, SettingsType settings) {
|
||||
this.componentLifecycle = componentLifecycle;
|
||||
this.componentConstructorArgs = componentConstructorArgs;
|
||||
this.settings = settings;
|
||||
}
|
||||
|
||||
public ComponentLifecycle<C, SettingsType, SDC, CCA> getComponentLifecycle() {
|
||||
return componentLifecycle;
|
||||
}
|
||||
|
||||
public SettingsType getSettings() {
|
||||
return settings;
|
||||
}
|
||||
|
||||
public ComponentConstructorArgs<C, SettingsType> getComponentConstructorArgs() {
|
||||
return componentConstructorArgs;
|
||||
}
|
||||
|
||||
public C createComponent() {
|
||||
return componentLifecycle.createComponent(componentConstructorArgs, settings);
|
||||
}
|
||||
}
|
||||
+1
@@ -3,4 +3,5 @@ package com.sap.sse.gwt.client.shared.components;
|
||||
import com.sap.sse.common.settings.Settings;
|
||||
|
||||
public interface ComponentConstructorArgs<C extends Component<S>, S extends Settings> {
|
||||
C createComponent(S settings);
|
||||
}
|
||||
+4
-4
@@ -7,18 +7,18 @@ import com.sap.sse.common.settings.Settings;
|
||||
*
|
||||
* @param <C> the component type
|
||||
* @param <S> the settings type
|
||||
* @param <W> the settings dialog component type
|
||||
* @param <SDC> the settings dialog component type
|
||||
*/
|
||||
public interface ComponentLifecycle<C extends Component<S>, S extends Settings, SDC extends SettingsDialogComponent<S>> {
|
||||
public interface ComponentLifecycle<C extends Component<S>, S extends Settings, SDC extends SettingsDialogComponent<S>, CCA extends ComponentConstructorArgs<C, S>> {
|
||||
|
||||
SDC getSettingsDialogComponent(S settings);
|
||||
|
||||
C getComponent();
|
||||
|
||||
S createDefaultSettings();
|
||||
|
||||
S cloneSettings(S settings);
|
||||
|
||||
C createComponent(CCA ComponentConstructorArgs, S settings);
|
||||
|
||||
/**
|
||||
* @return the display name of the component
|
||||
*/
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package com.sap.sse.gwt.client.shared.components;
|
||||
|
||||
import com.sap.sse.common.settings.Settings;
|
||||
|
||||
public class ComponentLifecycleAndSettings<SettingsType extends Settings> {
|
||||
private final ComponentLifecycle<?, SettingsType, ?,?> componentLifecycle;
|
||||
private SettingsType settings;
|
||||
|
||||
public ComponentLifecycleAndSettings(ComponentLifecycle<?, SettingsType, ?,?> componentLifecycle,
|
||||
SettingsType settings) {
|
||||
super();
|
||||
this.componentLifecycle = componentLifecycle;
|
||||
this.settings = settings;
|
||||
}
|
||||
|
||||
public ComponentLifecycle<?, SettingsType, ?,?> getComponentLifecycle() {
|
||||
return componentLifecycle;
|
||||
}
|
||||
|
||||
public SettingsType getSettings() {
|
||||
return settings;
|
||||
}
|
||||
|
||||
public void setSettings(SettingsType settings) {
|
||||
this.settings = settings;
|
||||
}
|
||||
}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
package com.sap.sse.gwt.client.shared.components;
|
||||
|
||||
import com.sap.sse.common.settings.Settings;
|
||||
|
||||
|
||||
public class CompositeLifecycle {
|
||||
public static class ComponentConstructionParameters<C extends Component<SettingsType>, SettingsType extends Settings> {
|
||||
private final ComponentLifecycle<C, SettingsType, ?,?> componentLifecycle;
|
||||
private final ComponentConstructorArgs<C, SettingsType> componentConstructorArgs;
|
||||
private final SettingsType settings;
|
||||
|
||||
public ComponentConstructionParameters(ComponentLifecycle<C, SettingsType, ?,?> componentLifecycle,
|
||||
ComponentConstructorArgs<C, SettingsType> componentConstructorArgs,
|
||||
SettingsType settings) {
|
||||
this.componentLifecycle = componentLifecycle;
|
||||
this.componentConstructorArgs = componentConstructorArgs;
|
||||
this.settings = settings;
|
||||
}
|
||||
|
||||
public ComponentLifecycle<?, SettingsType, ?,?> getComponentLifecycle() {
|
||||
return componentLifecycle;
|
||||
}
|
||||
|
||||
public SettingsType getSettings() {
|
||||
return settings;
|
||||
}
|
||||
|
||||
public ComponentConstructorArgs<C, SettingsType> getComponentConstructorArgs() {
|
||||
return componentConstructorArgs;
|
||||
}
|
||||
}
|
||||
|
||||
private final Iterable<ComponentConstructionParameters<?,?>> componentLifecycles;
|
||||
|
||||
public CompositeLifecycle(Iterable<ComponentConstructionParameters<?, ?>> componentLifecycles) {
|
||||
this.componentLifecycles = componentLifecycles;
|
||||
}
|
||||
|
||||
public Iterable<ComponentConstructionParameters<?, ?>> getComponentLifecycles() {
|
||||
return componentLifecycles;
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package com.sap.sse.gwt.client.shared.components;
|
||||
|
||||
import com.sap.sse.common.settings.AbstractSettings;
|
||||
|
||||
public class CompositeLifecycleSettings extends AbstractSettings {
|
||||
private final Iterable<ComponentLifecycleAndSettings<?>> settingsPerComponentLifecycle;
|
||||
|
||||
public CompositeLifecycleSettings(Iterable<ComponentLifecycleAndSettings<?>> settingsPerComponent) {
|
||||
this.settingsPerComponentLifecycle = settingsPerComponent;
|
||||
}
|
||||
|
||||
public Iterable<ComponentLifecycleAndSettings<?>> getSettingsPerComponentLifecycle() {
|
||||
return settingsPerComponentLifecycle;
|
||||
}
|
||||
}
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
package com.sap.sse.gwt.client.shared.components;
|
||||
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sse.common.settings.Settings;
|
||||
|
||||
/**
|
||||
* A component, that contains a collection of settings components in a tabbed panel.
|
||||
*
|
||||
* @author Frank (c5163874)
|
||||
*/
|
||||
public class CompositeLifecycleTabbedSettingsComponent implements Component<CompositeLifecycleSettings> {
|
||||
|
||||
private final Iterable<ComponentLifecycle<?,?,?,?>> componentLifecycles;
|
||||
private final String title;
|
||||
|
||||
public CompositeLifecycleTabbedSettingsComponent(Iterable<ComponentLifecycle<?,?,?,?>> componentLifecycles) {
|
||||
this(componentLifecycles, null);
|
||||
}
|
||||
|
||||
public CompositeLifecycleTabbedSettingsComponent(Iterable<ComponentLifecycle<?,?,?,?>> componentLifecycles, String title) {
|
||||
this.componentLifecycles = componentLifecycles;
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSettings() {
|
||||
for (ComponentLifecycle<?,?,?,?> component : componentLifecycles) {
|
||||
if (component.hasSettings()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SettingsDialogComponent<CompositeLifecycleSettings> getSettingsDialogComponent() {
|
||||
return new CompositeLifecycleTabbedSettingsDialogComponent(componentLifecycles);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompositeLifecycleSettings getSettings() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateSettings(CompositeLifecycleSettings newSettings) {
|
||||
for (ComponentLifecycleAndSettings<?> componentAndSettings : newSettings.getSettingsPerComponentLifecycle()) {
|
||||
updateSettings(componentAndSettings);
|
||||
}
|
||||
}
|
||||
|
||||
private <SettingsType extends Settings> void updateSettings(ComponentLifecycleAndSettings<SettingsType> componentLifecycleAndSettings) {
|
||||
// componentLifecycleAndSettings.getA().updateSettings(componentLifecycleAndSettings.getB());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLocalizedShortName() {
|
||||
if (title != null && !title.isEmpty()) {
|
||||
return title;
|
||||
} else {
|
||||
StringBuilder result = new StringBuilder();
|
||||
boolean first = true;
|
||||
for (ComponentLifecycle<?,?,?,?> component : componentLifecycles) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
result.append(" / ");
|
||||
}
|
||||
result.append(component.getLocalizedShortName());
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Widget getEntryWidget() {
|
||||
throw new RuntimeException("Virtual composite component doesn't have a widget of its own");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVisible() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVisible(boolean visibility) {
|
||||
throw new RuntimeException("Virtual composite component doesn't know how to make itself visible");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDependentCssClassName() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package com.sap.sse.gwt.client.shared.components;
|
||||
|
||||
import com.sap.sse.gwt.client.StringMessages;
|
||||
|
||||
/**
|
||||
* A composite settings dialog that combines the settings of several {@link Component}s, providing a tab
|
||||
* for each component.
|
||||
*
|
||||
* @author Axel Uhl (d043530)
|
||||
*
|
||||
*/
|
||||
public class CompositeLifecycleTabbedSettingsDialog extends SettingsDialog<CompositeLifecycleSettings> {
|
||||
|
||||
public CompositeLifecycleTabbedSettingsDialog(StringMessages stringConstants, final Iterable<ComponentLifecycle<?,?,?,?>> components, final String title) {
|
||||
super(new CompositeLifecycleTabbedSettingsComponent(components, title), stringConstants);
|
||||
}
|
||||
|
||||
public CompositeLifecycleTabbedSettingsDialog(StringMessages stringConstants, final Iterable<ComponentLifecycle<?,?,?,?>> components, final String title, DialogCallback<CompositeLifecycleSettings> callback) {
|
||||
super(new CompositeLifecycleTabbedSettingsComponent(components, title), stringConstants, callback);
|
||||
}
|
||||
}
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
package com.sap.sse.gwt.client.shared.components;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
|
||||
import com.google.gwt.user.client.ui.FocusWidget;
|
||||
import com.google.gwt.user.client.ui.TabPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.settings.Settings;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator;
|
||||
|
||||
public class CompositeLifecycleTabbedSettingsDialogComponent implements SettingsDialogComponent<CompositeLifecycleSettings> {
|
||||
|
||||
public class ComponentLifecycleAndDialogComponent<SettingsType extends Settings> extends Util.Pair<ComponentLifecycle<?, SettingsType, ?, ?>, SettingsDialogComponent<SettingsType>> {
|
||||
private static final long serialVersionUID = -4342002423677523158L;
|
||||
|
||||
public ComponentLifecycleAndDialogComponent(ComponentLifecycle<?, SettingsType, ?, ?> a, SettingsDialogComponent<SettingsType> b) {
|
||||
super(a, b);
|
||||
}
|
||||
}
|
||||
|
||||
private final Collection<ComponentLifecycleAndDialogComponent<?>> componentLifecycleAndDialogComponents;
|
||||
|
||||
public CompositeLifecycleTabbedSettingsDialogComponent(Iterable<ComponentLifecycle<?,?,?,?>> componentLifecycles) {
|
||||
this.componentLifecycleAndDialogComponents = new ArrayList<>();
|
||||
for (ComponentLifecycle<?,?,?,?> componentLifecycle : componentLifecycles) {
|
||||
if (componentLifecycle.hasSettings()) {
|
||||
this.componentLifecycleAndDialogComponents.add(createComponentLifecycleAndDialogComponent(componentLifecycle));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private <SettingsType extends Settings> ComponentLifecycleAndDialogComponent<SettingsType> createComponentLifecycleAndDialogComponent(ComponentLifecycle<?, SettingsType, ?, ?> componentLifecycle) {
|
||||
SettingsType settings = componentLifecycle.createDefaultSettings();
|
||||
return new ComponentLifecycleAndDialogComponent<SettingsType>(componentLifecycle, componentLifecycle.getSettingsDialogComponent(settings));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Widget getAdditionalWidget(DataEntryDialog<?> dialog) {
|
||||
TabPanel result = new TabPanel();
|
||||
for (ComponentLifecycleAndDialogComponent<?> component : componentLifecycleAndDialogComponents) {
|
||||
Widget w = component.getB().getAdditionalWidget((DataEntryDialog<?>) dialog);
|
||||
result.add(w, component.getA().getLocalizedShortName());
|
||||
}
|
||||
result.selectTab(0);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompositeLifecycleSettings getResult() {
|
||||
Collection<ComponentLifecycleAndSettings<?>> settings = new HashSet<>();
|
||||
for (ComponentLifecycleAndDialogComponent<?> component : componentLifecycleAndDialogComponents) {
|
||||
settings.add(getComponentAndSettings(component));
|
||||
}
|
||||
return new CompositeLifecycleSettings(settings);
|
||||
}
|
||||
|
||||
private <SettingsType extends Settings> ComponentLifecycleAndSettings<SettingsType> getComponentAndSettings(ComponentLifecycleAndDialogComponent<SettingsType> component) {
|
||||
return new ComponentLifecycleAndSettings<SettingsType>(component.getA(), component.getB().getResult());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Validator<CompositeLifecycleSettings> getValidator() {
|
||||
return new CompositeLifecycleValidator(componentLifecycleAndDialogComponents);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FocusWidget getFocusWidget() {
|
||||
for (ComponentLifecycleAndDialogComponent<?> component : componentLifecycleAndDialogComponents) {
|
||||
FocusWidget fw = component.getB().getFocusWidget();
|
||||
if (fw != null) {
|
||||
return fw;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
package com.sap.sse.gwt.client.shared.components;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.sap.sse.common.settings.Settings;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator;
|
||||
import com.sap.sse.gwt.client.shared.components.CompositeLifecycleTabbedSettingsDialogComponent.ComponentLifecycleAndDialogComponent;
|
||||
|
||||
public class CompositeLifecycleValidator implements Validator<CompositeLifecycleSettings> {
|
||||
|
||||
private final Map<ComponentLifecycle<?,?,?,?>, Validator<?>> validatorsMappedByComponentLifecycle;
|
||||
|
||||
public CompositeLifecycleValidator(Iterable<ComponentLifecycleAndDialogComponent<?>> componentLifecycleAndDialogComponents) {
|
||||
validatorsMappedByComponentLifecycle = new HashMap<>();
|
||||
for (ComponentLifecycleAndDialogComponent<?> component : componentLifecycleAndDialogComponents) {
|
||||
validatorsMappedByComponentLifecycle.put(component.getA(), component.getB().getValidator());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErrorMessage(CompositeLifecycleSettings valueToValidate) {
|
||||
StringBuilder result = new StringBuilder();
|
||||
for (ComponentLifecycleAndSettings<?> componentAndSettings : valueToValidate.getSettingsPerComponentLifecycle()) {
|
||||
final String errorMessage = getErrorMessage(componentAndSettings);
|
||||
if (errorMessage != null && !errorMessage.isEmpty()) {
|
||||
result.append(errorMessage);
|
||||
}
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
private <SettingsType extends Settings> String getErrorMessage(ComponentLifecycleAndSettings<SettingsType> componentLifecycleAndSettings) {
|
||||
String errorMessage = null;
|
||||
@SuppressWarnings("unchecked")
|
||||
Validator<SettingsType> validator = (Validator<SettingsType>) validatorsMappedByComponentLifecycle.get(componentLifecycleAndSettings.getComponentLifecycle());
|
||||
if (validator != null) {
|
||||
errorMessage = validator.getErrorMessage(componentLifecycleAndSettings.getSettings());
|
||||
if (errorMessage != null && !errorMessage.isEmpty() && !getClass().equals(validator.getClass())) {
|
||||
errorMessage += "; ";
|
||||
}
|
||||
}
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
}
|
||||
+1
-45
@@ -5,7 +5,6 @@ import com.sap.sse.common.settings.AbstractSettings;
|
||||
import com.sap.sse.common.settings.Settings;
|
||||
|
||||
public class CompositeSettings extends AbstractSettings {
|
||||
// TODO: Remove after lifecycle fix of datamining
|
||||
public static class ComponentAndSettingsPair<SettingsType extends Settings> extends Util.Pair<Component<SettingsType>, SettingsType> {
|
||||
private static final long serialVersionUID = -569811233041583043L;
|
||||
|
||||
@@ -14,57 +13,14 @@ public class CompositeSettings extends AbstractSettings {
|
||||
}
|
||||
}
|
||||
|
||||
public static class ComponentLifecycleAndSettingsPair<SettingsType extends Settings> {
|
||||
private final ComponentLifecycle<?, SettingsType, ?> componentLifecycle;
|
||||
private final SettingsType settings;
|
||||
|
||||
public ComponentLifecycleAndSettingsPair(ComponentLifecycle<?, SettingsType, ?> componentLifecycle,
|
||||
SettingsType settings) {
|
||||
super();
|
||||
this.componentLifecycle = componentLifecycle;
|
||||
this.settings = settings;
|
||||
}
|
||||
|
||||
public ComponentLifecycle<?, SettingsType, ?> getComponentLifecycle() {
|
||||
return componentLifecycle;
|
||||
}
|
||||
|
||||
public SettingsType getSettings() {
|
||||
return settings;
|
||||
}
|
||||
}
|
||||
|
||||
private final Iterable<ComponentLifecycleAndSettingsPair<?>> settingsPerComponentLifecycle;
|
||||
private final Iterable<ComponentAndSettingsPair<?>> settingsPerComponent;
|
||||
|
||||
// TODO: Remove after lifecycle fix of datamining
|
||||
public CompositeSettings(Iterable<ComponentAndSettingsPair<?>> settingsPerComponent, String x) {
|
||||
this.settingsPerComponentLifecycle = null;
|
||||
public CompositeSettings(Iterable<ComponentAndSettingsPair<?>> settingsPerComponent) {
|
||||
this.settingsPerComponent = settingsPerComponent;
|
||||
}
|
||||
|
||||
public CompositeSettings(Iterable<ComponentLifecycleAndSettingsPair<?>> settingsPerComponent) {
|
||||
this.settingsPerComponentLifecycle = settingsPerComponent;
|
||||
this.settingsPerComponent = null;
|
||||
}
|
||||
|
||||
public Iterable<ComponentAndSettingsPair<?>> getSettingsPerComponent() {
|
||||
return settingsPerComponent;
|
||||
}
|
||||
|
||||
public Iterable<ComponentLifecycleAndSettingsPair<?>> getSettingsPerComponentLifecycle() {
|
||||
return settingsPerComponentLifecycle;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public <SettingsType extends Settings> SettingsType getSettingsForType(Class<SettingsType> settingsType) {
|
||||
SettingsType result = null;
|
||||
for(ComponentLifecycleAndSettingsPair<?> componentAndSettings: settingsPerComponentLifecycle) {
|
||||
if(componentAndSettings.getSettings().getClass().getName().equals(settingsType.getName())) {
|
||||
result = (SettingsType) componentAndSettings.getSettings();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
+10
-15
@@ -2,7 +2,7 @@ package com.sap.sse.gwt.client.shared.components;
|
||||
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sse.common.settings.Settings;
|
||||
import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentLifecycleAndSettingsPair;
|
||||
import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentAndSettingsPair;
|
||||
|
||||
/**
|
||||
* A component, that contains a collection of settings components in a tabbed panel.
|
||||
@@ -11,21 +11,21 @@ import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentLifec
|
||||
*/
|
||||
public class CompositeTabbedSettingsComponent implements Component<CompositeSettings> {
|
||||
|
||||
private final Iterable<ComponentLifecycle<?,?,?>> components;
|
||||
private final Iterable<Component<?>> components;
|
||||
private final String title;
|
||||
|
||||
public CompositeTabbedSettingsComponent(Iterable<ComponentLifecycle<?,?,?>> components) {
|
||||
public CompositeTabbedSettingsComponent(Iterable<Component<?>> components) {
|
||||
this(components, null);
|
||||
}
|
||||
|
||||
public CompositeTabbedSettingsComponent(Iterable<ComponentLifecycle<?,?,?>> components, String title) {
|
||||
public CompositeTabbedSettingsComponent(Iterable<Component<?>> components, String title) {
|
||||
this.components = components;
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSettings() {
|
||||
for (ComponentLifecycle<?,?,?> component : components) {
|
||||
for (Component<?> component : components) {
|
||||
if (component.hasSettings()) {
|
||||
return true;
|
||||
}
|
||||
@@ -45,18 +45,13 @@ public class CompositeTabbedSettingsComponent implements Component<CompositeSett
|
||||
|
||||
@Override
|
||||
public void updateSettings(CompositeSettings newSettings) {
|
||||
for (CompositeSettings.ComponentLifecycleAndSettingsPair<?> componentAndSettings : newSettings.getSettingsPerComponentLifecycle()) {
|
||||
for (CompositeSettings.ComponentAndSettingsPair<?> componentAndSettings : newSettings.getSettingsPerComponent()) {
|
||||
updateSettings(componentAndSettings);
|
||||
}
|
||||
}
|
||||
|
||||
private <SettingsType extends Settings> void updateSettings(ComponentLifecycleAndSettingsPair<SettingsType> componentLifecycleAndSettings) {
|
||||
ComponentLifecycle<?, SettingsType, ?> componentLifecycle = componentLifecycleAndSettings.getComponentLifecycle();
|
||||
if(componentLifecycle.getComponent() != null) {
|
||||
componentLifecycle.getComponent().updateSettings(componentLifecycleAndSettings.getSettings());
|
||||
} else {
|
||||
// ??? store in lifecycle
|
||||
}
|
||||
private <SettingsType extends Settings> void updateSettings(ComponentAndSettingsPair<SettingsType> componentAndSettings) {
|
||||
componentAndSettings.getA().updateSettings(componentAndSettings.getB());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -66,7 +61,7 @@ public class CompositeTabbedSettingsComponent implements Component<CompositeSett
|
||||
} else {
|
||||
StringBuilder result = new StringBuilder();
|
||||
boolean first = true;
|
||||
for (ComponentLifecycle<?,?,?> component : components) {
|
||||
for (Component<?> component : components) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
@@ -97,4 +92,4 @@ public class CompositeTabbedSettingsComponent implements Component<CompositeSett
|
||||
public String getDependentCssClassName() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
+6
-5
@@ -10,12 +10,13 @@ import com.sap.sse.gwt.client.StringMessages;
|
||||
*
|
||||
*/
|
||||
public class CompositeTabbedSettingsDialog extends SettingsDialog<CompositeSettings> {
|
||||
|
||||
public CompositeTabbedSettingsDialog(StringMessages stringConstants, final Iterable<Component<?>> components) {
|
||||
this(stringConstants, components, null);
|
||||
}
|
||||
|
||||
public CompositeTabbedSettingsDialog(StringMessages stringConstants, final Iterable<ComponentLifecycle<?,?,?>> components, final String title) {
|
||||
public CompositeTabbedSettingsDialog(StringMessages stringConstants, final Iterable<Component<?>> components, final String title) {
|
||||
super(new CompositeTabbedSettingsComponent(components, title), stringConstants);
|
||||
}
|
||||
|
||||
public CompositeTabbedSettingsDialog(StringMessages stringConstants, final Iterable<ComponentLifecycle<?,?,?>> components, final String title, DialogCallback<CompositeSettings> callback) {
|
||||
super(new CompositeTabbedSettingsComponent(components, title), stringConstants, callback);
|
||||
}
|
||||
|
||||
}
|
||||
+17
-22
@@ -11,43 +11,38 @@ import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.settings.Settings;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator;
|
||||
import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentLifecycleAndSettingsPair;
|
||||
import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentAndSettingsPair;
|
||||
|
||||
public class CompositeTabbedSettingsDialogComponent implements SettingsDialogComponent<CompositeSettings> {
|
||||
|
||||
public class ComponentLifecycleAndDialogComponent<SettingsType extends Settings> extends Util.Pair<ComponentLifecycle<?, SettingsType, ?>, SettingsDialogComponent<SettingsType>> {
|
||||
public class ComponentAndDialogComponent<SettingsType extends Settings> extends Util.Pair<Component<SettingsType>, SettingsDialogComponent<SettingsType>> {
|
||||
private static final long serialVersionUID = -4342002423677523158L;
|
||||
|
||||
public ComponentLifecycleAndDialogComponent(ComponentLifecycle<?, SettingsType, ?> a, SettingsDialogComponent<SettingsType> b) {
|
||||
public ComponentAndDialogComponent(Component<SettingsType> a, SettingsDialogComponent<SettingsType> b) {
|
||||
super(a, b);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private final Collection<ComponentLifecycleAndDialogComponent<?>> components;
|
||||
private final Collection<ComponentAndDialogComponent<?>> components;
|
||||
|
||||
// TODO: Remove after lifecycle fix of datamining
|
||||
public CompositeTabbedSettingsDialogComponent(Iterable<Component<?>> components, String todo) {
|
||||
public CompositeTabbedSettingsDialogComponent(Iterable<Component<?>> components) {
|
||||
this.components = new ArrayList<>();
|
||||
}
|
||||
|
||||
public CompositeTabbedSettingsDialogComponent(Iterable<ComponentLifecycle<?,?,?>> components) {
|
||||
this.components = new ArrayList<>();
|
||||
for (ComponentLifecycle<?,?,?> componentLifecycle : components) {
|
||||
if (componentLifecycle.hasSettings()) {
|
||||
this.components.add(createComponentLifecycleAndDialogComponent(componentLifecycle));
|
||||
for (Component<?> component : components) {
|
||||
if (component.hasSettings()) {
|
||||
this.components.add(createComponentAndDialogComponent(component));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private <SettingsType extends Settings> ComponentLifecycleAndDialogComponent<SettingsType> createComponentLifecycleAndDialogComponent(ComponentLifecycle<?, SettingsType, ?> componentLifecycle) {
|
||||
SettingsType settings = componentLifecycle.getComponent() != null ? componentLifecycle.getComponent().getSettings() : componentLifecycle.createDefaultSettings();
|
||||
return new ComponentLifecycleAndDialogComponent<SettingsType>(componentLifecycle, componentLifecycle.getSettingsDialogComponent(settings));
|
||||
private <SettingsType extends Settings> ComponentAndDialogComponent<SettingsType> createComponentAndDialogComponent(Component<SettingsType> component) {
|
||||
return new ComponentAndDialogComponent<SettingsType>(component, component.getSettingsDialogComponent());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Widget getAdditionalWidget(DataEntryDialog<?> dialog) {
|
||||
TabPanel result = new TabPanel();
|
||||
for (ComponentLifecycleAndDialogComponent<?> component : components) {
|
||||
for (ComponentAndDialogComponent<?> component : components) {
|
||||
Widget w = component.getB().getAdditionalWidget((DataEntryDialog<?>) dialog);
|
||||
result.add(w, component.getA().getLocalizedShortName());
|
||||
}
|
||||
@@ -57,15 +52,15 @@ public class CompositeTabbedSettingsDialogComponent implements SettingsDialogCom
|
||||
|
||||
@Override
|
||||
public CompositeSettings getResult() {
|
||||
Collection<ComponentLifecycleAndSettingsPair<?>> settings = new HashSet<>();
|
||||
for (ComponentLifecycleAndDialogComponent<?> component : components) {
|
||||
Collection<ComponentAndSettingsPair<?>> settings = new HashSet<>();
|
||||
for (ComponentAndDialogComponent<?> component : components) {
|
||||
settings.add(getComponentAndSettings(component));
|
||||
}
|
||||
return new CompositeSettings(settings);
|
||||
}
|
||||
|
||||
private <SettingsType extends Settings> ComponentLifecycleAndSettingsPair<SettingsType> getComponentAndSettings(ComponentLifecycleAndDialogComponent<SettingsType> component) {
|
||||
return new ComponentLifecycleAndSettingsPair<SettingsType>(component.getA(), component.getB().getResult());
|
||||
private <SettingsType extends Settings> ComponentAndSettingsPair<SettingsType> getComponentAndSettings(ComponentAndDialogComponent<SettingsType> component) {
|
||||
return new ComponentAndSettingsPair<SettingsType>(component.getA(), component.getB().getResult());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -75,7 +70,7 @@ public class CompositeTabbedSettingsDialogComponent implements SettingsDialogCom
|
||||
|
||||
@Override
|
||||
public FocusWidget getFocusWidget() {
|
||||
for (ComponentLifecycleAndDialogComponent<?> component : components) {
|
||||
for (ComponentAndDialogComponent<?> component : components) {
|
||||
FocusWidget fw = component.getB().getFocusWidget();
|
||||
if (fw != null) {
|
||||
return fw;
|
||||
|
||||
+9
-9
@@ -5,16 +5,16 @@ import java.util.Map;
|
||||
|
||||
import com.sap.sse.common.settings.Settings;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator;
|
||||
import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentLifecycleAndSettingsPair;
|
||||
import com.sap.sse.gwt.client.shared.components.CompositeTabbedSettingsDialogComponent.ComponentLifecycleAndDialogComponent;
|
||||
import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentAndSettingsPair;
|
||||
import com.sap.sse.gwt.client.shared.components.CompositeTabbedSettingsDialogComponent.ComponentAndDialogComponent;
|
||||
|
||||
public class CompositeValidator implements Validator<CompositeSettings> {
|
||||
|
||||
private final Map<ComponentLifecycle<?,?,?>, Validator<?>> validatorsMappedByComponent;
|
||||
private final Map<Component<?>, Validator<?>> validatorsMappedByComponent;
|
||||
|
||||
public CompositeValidator(Iterable<ComponentLifecycleAndDialogComponent<?>> componentsAndDialogComponents) {
|
||||
public CompositeValidator(Iterable<ComponentAndDialogComponent<?>> componentsAndDialogComponents) {
|
||||
validatorsMappedByComponent = new HashMap<>();
|
||||
for (ComponentLifecycleAndDialogComponent<?> component : componentsAndDialogComponents) {
|
||||
for (ComponentAndDialogComponent<?> component : componentsAndDialogComponents) {
|
||||
validatorsMappedByComponent.put(component.getA(), component.getB().getValidator());
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,7 @@ public class CompositeValidator implements Validator<CompositeSettings> {
|
||||
@Override
|
||||
public String getErrorMessage(CompositeSettings valueToValidate) {
|
||||
StringBuilder result = new StringBuilder();
|
||||
for (ComponentLifecycleAndSettingsPair<?> componentAndSettings : valueToValidate.getSettingsPerComponentLifecycle()) {
|
||||
for (ComponentAndSettingsPair<?> componentAndSettings : valueToValidate.getSettingsPerComponent()) {
|
||||
final String errorMessage = getErrorMessage(componentAndSettings);
|
||||
if (errorMessage != null && !errorMessage.isEmpty()) {
|
||||
result.append(errorMessage);
|
||||
@@ -31,12 +31,12 @@ public class CompositeValidator implements Validator<CompositeSettings> {
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
private <SettingsType extends Settings> String getErrorMessage(ComponentLifecycleAndSettingsPair<SettingsType> componentAndSettings) {
|
||||
private <SettingsType extends Settings> String getErrorMessage(ComponentAndSettingsPair<SettingsType> componentAndSettings) {
|
||||
String errorMessage = null;
|
||||
@SuppressWarnings("unchecked")
|
||||
Validator<SettingsType> validator = (Validator<SettingsType>) validatorsMappedByComponent.get(componentAndSettings.getComponentLifecycle());
|
||||
Validator<SettingsType> validator = (Validator<SettingsType>) validatorsMappedByComponent.get(componentAndSettings.getA());
|
||||
if (validator != null) {
|
||||
errorMessage = validator.getErrorMessage(componentAndSettings.getSettings());
|
||||
errorMessage = validator.getErrorMessage(componentAndSettings.getB());
|
||||
if (errorMessage != null && !errorMessage.isEmpty() && !getClass().equals(validator.getClass())) {
|
||||
errorMessage += "; ";
|
||||
}
|
||||
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
package com.sap.sse.gwt.client.shared.components;
|
||||
|
||||
import com.google.gwt.user.client.ui.FocusWidget;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sse.common.settings.Settings;
|
||||
import com.sap.sse.gwt.client.StringMessages;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
||||
|
||||
public class LifecycleSettingsDialog<SettingsType extends Settings> extends DataEntryDialog<SettingsType> {
|
||||
private final SettingsDialogComponent<SettingsType> settingsDialogComponent;
|
||||
|
||||
public LifecycleSettingsDialog(final ComponentLifecycle<? ,SettingsType, ?, ?> componentLifecycle, SettingsDialogComponent<SettingsType> dialogComponent,
|
||||
StringMessages stringMessages, DialogCallback<SettingsType> callback) {
|
||||
this(componentLifecycle, dialogComponent, stringMessages, /* animationEnabled */ true, callback);
|
||||
}
|
||||
|
||||
/**
|
||||
* This auxiliary constructor is required to avoid duplicate calls to {@link ComponentLifecycle#getSettingsDialogComponent()}
|
||||
* which may choose to create a new instance each call. Such duplicate instances would cause the validator to
|
||||
* operate on a different instance as the one used for displaying, hence not allowing the validator to use the UI
|
||||
* elements, neither for update nor read.
|
||||
*/
|
||||
private LifecycleSettingsDialog(final ComponentLifecycle<?, SettingsType, ?, ?> componentLifecycle,
|
||||
SettingsDialogComponent<SettingsType> dialogComponent, StringMessages stringMessages,
|
||||
boolean animationEnabled, final DialogCallback<SettingsType> callback) {
|
||||
super(stringMessages.settingsForComponent(componentLifecycle.getLocalizedShortName()), null, stringMessages.ok(),
|
||||
stringMessages.cancel(), dialogComponent.getValidator(), animationEnabled,
|
||||
new DialogCallback<SettingsType>() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
if(callback != null) {
|
||||
callback.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ok(SettingsType newSettings) {
|
||||
if(callback != null) {
|
||||
callback.ok(newSettings);
|
||||
}
|
||||
}
|
||||
});
|
||||
this.settingsDialogComponent = dialogComponent;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
return settingsDialogComponent.getAdditionalWidget(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SettingsType getResult() {
|
||||
return settingsDialogComponent.getResult();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
super.show();
|
||||
FocusWidget focusWidget = settingsDialogComponent.getFocusWidget();
|
||||
if (focusWidget != null) {
|
||||
focusWidget.setFocus(true);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+19
-29
@@ -6,9 +6,9 @@ import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sse.common.settings.Settings;
|
||||
import com.sap.sse.gwt.client.shared.components.ComponentLifecycle;
|
||||
import com.sap.sse.gwt.client.shared.components.Component;
|
||||
import com.sap.sse.gwt.client.shared.components.CompositeSettings;
|
||||
import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentLifecycleAndSettingsPair;
|
||||
import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentAndSettingsPair;
|
||||
|
||||
/**
|
||||
* An abstract base class for perspectives.
|
||||
@@ -17,51 +17,41 @@ import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentLifec
|
||||
*/
|
||||
public abstract class AbstractPerspective<SettingsType extends Settings> implements Perspective<SettingsType> {
|
||||
|
||||
protected final List<ComponentLifecycle<?,?,?>> componentLifecycles;
|
||||
protected final List<Component<?>> components;
|
||||
|
||||
public AbstractPerspective() {
|
||||
componentLifecycles = new ArrayList<ComponentLifecycle<?,?,?>>();
|
||||
public AbstractPerspective(Collection<Component<?>> components) {
|
||||
this.components = new ArrayList<>(components);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompositeSettings getSettingsOfComponents() {
|
||||
Collection<ComponentLifecycleAndSettingsPair<?>> settings = new HashSet<>();
|
||||
for (ComponentLifecycle<?,?,?> component : componentLifecycles) {
|
||||
ComponentLifecycleAndSettingsPair<?> componentLifecycleAndSettings = getComponentLifecycleAndSettings(component);
|
||||
if (componentLifecycleAndSettings != null) {
|
||||
settings.add(componentLifecycleAndSettings);
|
||||
Collection<ComponentAndSettingsPair<?>> settings = new HashSet<>();
|
||||
for (Component<?> component : components) {
|
||||
ComponentAndSettingsPair<?> componentAndSettings = getComponentAndSettings(component);
|
||||
if (componentAndSettings != null) {
|
||||
settings.add(componentAndSettings);
|
||||
}
|
||||
}
|
||||
return new CompositeSettings(settings);
|
||||
}
|
||||
|
||||
private <ComponentSettingsType extends Settings> ComponentLifecycleAndSettingsPair<ComponentSettingsType> getComponentLifecycleAndSettings(ComponentLifecycle<?, ComponentSettingsType, ?> componentLifecycle) {
|
||||
ComponentLifecycleAndSettingsPair<ComponentSettingsType> result = null;
|
||||
if(componentLifecycle.hasSettings()) {
|
||||
ComponentSettingsType settings = componentLifecycle.getComponent() != null ? componentLifecycle.getComponent().getSettings() : componentLifecycle.createDefaultSettings();
|
||||
result = new ComponentLifecycleAndSettingsPair<ComponentSettingsType>(componentLifecycle, settings);
|
||||
private <ComponentSettingsType extends Settings> ComponentAndSettingsPair<ComponentSettingsType> getComponentAndSettings(Component<ComponentSettingsType> component) {
|
||||
ComponentAndSettingsPair<ComponentSettingsType> result = null;
|
||||
if(component.hasSettings()) {
|
||||
result = new ComponentAndSettingsPair<ComponentSettingsType>(component, component.getSettings());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateSettingsOfComponents(CompositeSettings newSettings) {
|
||||
for (CompositeSettings.ComponentLifecycleAndSettingsPair<?> componentLifecycleAndSettings : newSettings.getSettingsPerComponentLifecycle()) {
|
||||
updateSettings(componentLifecycleAndSettings);
|
||||
for (CompositeSettings.ComponentAndSettingsPair<?> componentAndSettings : newSettings.getSettingsPerComponent()) {
|
||||
updateSettings(componentAndSettings);
|
||||
}
|
||||
}
|
||||
|
||||
private <ComponentSettingsType extends Settings> void updateSettings(ComponentLifecycleAndSettingsPair<ComponentSettingsType> componentLifecycleAndSettings) {
|
||||
ComponentLifecycle<?, ComponentSettingsType, ?> componentLifecycle = componentLifecycleAndSettings.getComponentLifecycle();
|
||||
if(componentLifecycle.getComponent() != null) {
|
||||
componentLifecycle.getComponent().updateSettings(componentLifecycleAndSettings.getSettings());
|
||||
} else {
|
||||
// ??? store in lifecycle
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<ComponentLifecycle<?,?,?>> getComponentLifecycles() {
|
||||
return componentLifecycles;
|
||||
private <ComponentSettingsType extends Settings> void updateSettings(ComponentAndSettingsPair<ComponentSettingsType> componentAndSettings) {
|
||||
Component<ComponentSettingsType> component = componentAndSettings.getA();
|
||||
component.updateSettings(componentAndSettings.getB());
|
||||
}
|
||||
}
|
||||
+15
-25
@@ -8,9 +8,9 @@ import java.util.List;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sse.common.settings.Settings;
|
||||
import com.sap.sse.gwt.client.shared.components.ComponentLifecycle;
|
||||
import com.sap.sse.gwt.client.shared.components.Component;
|
||||
import com.sap.sse.gwt.client.shared.components.CompositeSettings;
|
||||
import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentLifecycleAndSettingsPair;
|
||||
import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentAndSettingsPair;
|
||||
|
||||
/**
|
||||
* An abstract base class for perspectives with a widget.
|
||||
@@ -19,17 +19,17 @@ import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentLifec
|
||||
*/
|
||||
public abstract class AbstractPerspectiveComposite<SettingsType extends Settings> extends Composite implements Perspective<SettingsType> {
|
||||
|
||||
protected final List<ComponentLifecycle<?,?,?>> componentLifecycles;
|
||||
protected final List<Component<?>> components;
|
||||
|
||||
public AbstractPerspectiveComposite() {
|
||||
componentLifecycles = new ArrayList<ComponentLifecycle<?,?,?>>();
|
||||
this.components = new ArrayList<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompositeSettings getSettingsOfComponents() {
|
||||
Collection<ComponentLifecycleAndSettingsPair<?>> settings = new HashSet<>();
|
||||
for (ComponentLifecycle<?,?,?> componentLifecycle : componentLifecycles) {
|
||||
ComponentLifecycleAndSettingsPair<?> componentAndSettings = getComponentLifecycleAndSettings(componentLifecycle);
|
||||
Collection<ComponentAndSettingsPair<?>> settings = new HashSet<>();
|
||||
for (Component<?> component : components) {
|
||||
ComponentAndSettingsPair<?> componentAndSettings = getComponentAndSettings(component);
|
||||
if (componentAndSettings != null) {
|
||||
settings.add(componentAndSettings);
|
||||
}
|
||||
@@ -37,34 +37,24 @@ public abstract class AbstractPerspectiveComposite<SettingsType extends Settings
|
||||
return new CompositeSettings(settings);
|
||||
}
|
||||
|
||||
private <ComponentSettingsType extends Settings> ComponentLifecycleAndSettingsPair<ComponentSettingsType> getComponentLifecycleAndSettings(ComponentLifecycle<?, ComponentSettingsType, ?> componentLifecycle) {
|
||||
ComponentLifecycleAndSettingsPair<ComponentSettingsType> result = null;
|
||||
if(componentLifecycle.hasSettings()) {
|
||||
ComponentSettingsType settings = componentLifecycle.getComponent() != null ? componentLifecycle.getComponent().getSettings() : componentLifecycle.createDefaultSettings();
|
||||
result = new ComponentLifecycleAndSettingsPair<ComponentSettingsType>(componentLifecycle, settings);
|
||||
private <ComponentSettingsType extends Settings> ComponentAndSettingsPair<ComponentSettingsType> getComponentAndSettings(Component<ComponentSettingsType> component) {
|
||||
ComponentAndSettingsPair<ComponentSettingsType> result = null;
|
||||
if(component.hasSettings()) {
|
||||
result = new ComponentAndSettingsPair<ComponentSettingsType>(component, component.getSettings());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateSettingsOfComponents(CompositeSettings newSettings) {
|
||||
for (CompositeSettings.ComponentLifecycleAndSettingsPair<?> componentAndSettings : newSettings.getSettingsPerComponentLifecycle()) {
|
||||
for (CompositeSettings.ComponentAndSettingsPair<?> componentAndSettings : newSettings.getSettingsPerComponent()) {
|
||||
updateSettings(componentAndSettings);
|
||||
}
|
||||
}
|
||||
|
||||
private <ComponentSettingsType extends Settings> void updateSettings(ComponentLifecycleAndSettingsPair<ComponentSettingsType> componentLifecycleAndSettings) {
|
||||
ComponentLifecycle<?, ComponentSettingsType, ?> componentLifecycle = componentLifecycleAndSettings.getComponentLifecycle();
|
||||
if(componentLifecycle.getComponent() != null) {
|
||||
componentLifecycle.getComponent().updateSettings(componentLifecycleAndSettings.getSettings());
|
||||
} else {
|
||||
// ??? store in lifecycle
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<ComponentLifecycle<?,?,?>> getComponentLifecycles() {
|
||||
return componentLifecycles;
|
||||
private <ComponentSettingsType extends Settings> void updateSettings(ComponentAndSettingsPair<ComponentSettingsType> componentAndSettings) {
|
||||
Component<ComponentSettingsType> component = componentAndSettings.getA();
|
||||
component.updateSettings(componentAndSettings.getB());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
package com.sap.sse.gwt.client.shared.perspective;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sse.common.settings.Settings;
|
||||
import com.sap.sse.gwt.client.shared.components.ComponentLifecycle;
|
||||
import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent;
|
||||
|
||||
/**
|
||||
* An abstract base class for perspective lifecycles.
|
||||
* @author Frank
|
||||
*
|
||||
*/
|
||||
public abstract class AbstractPerspectiveLifecycle<P extends Perspective<S>, S extends Settings, SDP extends SettingsDialogComponent<S>, PCA extends PerspectiveConstructorArgs<P, S>>
|
||||
implements PerspectiveLifecycle<P, S, SDP, PCA> {
|
||||
|
||||
protected final List<ComponentLifecycle<?,?,?,?>> componentLifecycles;
|
||||
|
||||
public AbstractPerspectiveLifecycle() {
|
||||
componentLifecycles = new ArrayList<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<ComponentLifecycle<?,?,?,?>> getComponentLifecycles() {
|
||||
return componentLifecycles;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPerspectiveName() {
|
||||
return getLocalizedShortName();
|
||||
}
|
||||
}
|
||||
+7
@@ -1,10 +1,17 @@
|
||||
package com.sap.sse.gwt.client.shared.perspective;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.sap.sse.common.settings.AbstractSettings;
|
||||
import com.sap.sse.gwt.client.shared.components.Component;
|
||||
import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent;
|
||||
|
||||
public abstract class AbstractPerspectiveWithoutSettings extends AbstractPerspective<AbstractSettings> {
|
||||
|
||||
public AbstractPerspectiveWithoutSettings(Collection<Component<?>> components) {
|
||||
super(components);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSettings() {
|
||||
return false;
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.sap.sse.gwt.client.shared.perspective;
|
||||
|
||||
import com.sap.sse.common.settings.Settings;
|
||||
import com.sap.sse.gwt.client.shared.components.Component;
|
||||
import com.sap.sse.gwt.client.shared.components.ComponentLifecycle;
|
||||
import com.sap.sse.gwt.client.shared.components.CompositeSettings;
|
||||
|
||||
/**
|
||||
@@ -12,13 +11,10 @@ import com.sap.sse.gwt.client.shared.components.CompositeSettings;
|
||||
*
|
||||
*/
|
||||
public interface Perspective<SettingsType extends Settings> extends Component<SettingsType> {
|
||||
Iterable<ComponentLifecycle<?,?,?>> getComponentLifecycles();
|
||||
|
||||
CompositeSettings getSettingsOfComponents();
|
||||
|
||||
void updateSettingsOfComponents(CompositeSettings settingsOfComponents);
|
||||
|
||||
void setSettingsOfComponents(CompositeSettings settingsOfComponents);
|
||||
|
||||
String getPerspectiveName();
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package com.sap.sse.gwt.client.shared.perspective;
|
||||
|
||||
import com.sap.sse.common.settings.Settings;
|
||||
import com.sap.sse.gwt.client.shared.components.ComponentConstructorArgs;
|
||||
|
||||
public interface PerspectiveConstructorArgs<P extends Perspective<S>, S extends Settings> extends ComponentConstructorArgs<P, S> {
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package com.sap.sse.gwt.client.shared.perspective;
|
||||
|
||||
import com.sap.sse.common.settings.Settings;
|
||||
import com.sap.sse.gwt.client.shared.components.ComponentLifecycle;
|
||||
import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent;
|
||||
|
||||
/**
|
||||
* A lifecycle interface for perspectives
|
||||
* @author Frank
|
||||
*
|
||||
* @param <P> the perspective type
|
||||
* @param <S> the settings type
|
||||
* @param <SDP> the settings dialog component type
|
||||
*/
|
||||
public interface PerspectiveLifecycle<P extends Perspective<S>, S extends Settings, SDP extends SettingsDialogComponent<S>,
|
||||
PCA extends PerspectiveConstructorArgs<P, S>> extends ComponentLifecycle<P, S, SDP, PCA> {
|
||||
Iterable<ComponentLifecycle<?,?,?,?>> getComponentLifecycles();
|
||||
|
||||
P createComponent(PCA PerspectiveConstructorArgs, S settings);
|
||||
|
||||
String getPerspectiveName();
|
||||
}
|
||||
Reference in new issue
Block a user