mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-24 14:38:45 +00:00
bug5510: added first version of subscription card design.
- fixed getString method of SubscriptionStringConstraints not to break if key cannot be find. Instead it return the key with surrounding ??? - partials need to be moved to general shared package instead of desktop package - highlight selection is not completed - button switch to cancel subscription and general mail button is missing - there is currently no meaning-full action behind the button - header text is not final - ...
This commit is contained in:
+51
@@ -0,0 +1,51 @@
|
||||
.feature {
|
||||
background-image: resourceUrl("greenCheck");
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
padding-left: 30px;
|
||||
}
|
||||
.highlight {
|
||||
border: solid 1px green;
|
||||
}
|
||||
.subscription {
|
||||
border: solid;
|
||||
border-width: 1px;
|
||||
border-color: #ddd;
|
||||
border-radius: .333333333333333em;
|
||||
text-align: center;
|
||||
max-width: 390px;
|
||||
}
|
||||
.title {
|
||||
background-color: #f2f2f2;
|
||||
margin: 0;
|
||||
padding: 20px;
|
||||
border-bottom-color: #ddd;
|
||||
}
|
||||
.description {
|
||||
margin: 20px;
|
||||
}
|
||||
.price {
|
||||
margin: 20px;
|
||||
}
|
||||
.features {
|
||||
margin: 30px;
|
||||
text-align: left;
|
||||
}
|
||||
.subscribe {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-bottom: 30px;
|
||||
display: block;
|
||||
}
|
||||
.container {
|
||||
display: flex;
|
||||
flex-flow: row wrap;
|
||||
gap: 10px;
|
||||
}
|
||||
/* Small screens */
|
||||
@media (max-width: 500px) {
|
||||
.container {
|
||||
/* On small screens, we are no longer using row direction but column */
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
package com.sap.sailing.gwt.home.desktop.partials.subscription;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.dom.client.HeadingElement;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.i18n.client.NumberFormat;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.uibinder.client.UiHandler;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.FlowPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.common.client.SharedResources;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.security.shared.StringMessagesKey;
|
||||
import com.sap.sse.security.ui.client.i18n.subscription.SubscriptionStringConstants;
|
||||
import com.sap.sse.security.ui.shared.subscription.SubscriptionPlanDTO;
|
||||
|
||||
public class Subscription extends Composite {
|
||||
|
||||
private static SubscriptionUiBinder uiBinder = GWT.create(SubscriptionUiBinder.class);
|
||||
private static final String FEATURE_STYLE = SubscriptionResources.INSTANCE.css().feature();
|
||||
private static final String HIGHLIGHT_STYLE = SubscriptionResources.INSTANCE.css().highlight();
|
||||
|
||||
interface SubscriptionUiBinder extends UiBinder<Widget, Subscription> {
|
||||
}
|
||||
|
||||
public Subscription() {
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
}
|
||||
|
||||
@UiField
|
||||
Button subscribeButton;
|
||||
@UiField
|
||||
HeadingElement title;
|
||||
@UiField
|
||||
HeadingElement description;
|
||||
@UiField
|
||||
HeadingElement price;
|
||||
@UiField
|
||||
FlowPanel features;
|
||||
|
||||
@UiField
|
||||
StringMessages i18n;
|
||||
|
||||
public Subscription(SubscriptionPlanDTO subscriptionPlanDTO, boolean highlight) {
|
||||
SubscriptionResources.INSTANCE.css().ensureInjected();
|
||||
SharedResources.INSTANCE.mediaCss().ensureInjected();
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
|
||||
if (highlight) {
|
||||
addStyleName(HIGHLIGHT_STYLE);
|
||||
}
|
||||
title.setInnerText(SubscriptionStringConstants.INSTANCE.getString(subscriptionPlanDTO.getNameMessageKey()));
|
||||
description.setInnerText(SubscriptionStringConstants.INSTANCE.getString(subscriptionPlanDTO.getDescMessageKey()));
|
||||
NumberFormat nf = NumberFormat.getCurrencyFormat("USD");
|
||||
String priceText = i18n.price() + ": " + nf.format(subscriptionPlanDTO.getPrice());
|
||||
price.setInnerText(priceText);
|
||||
for (StringMessagesKey featureKey: subscriptionPlanDTO.getFeatures()) {
|
||||
FlowPanel feature = new FlowPanel();
|
||||
feature.addStyleName(FEATURE_STYLE);
|
||||
feature.add(new Label(SubscriptionStringConstants.INSTANCE.getString(featureKey)));
|
||||
features.add(feature);
|
||||
}
|
||||
}
|
||||
|
||||
@UiHandler("subscribeButton")
|
||||
void onClick(ClickEvent e) {
|
||||
Window.alert("Selected!");
|
||||
}
|
||||
|
||||
public void setText(String text) {
|
||||
subscribeButton.setText(text);
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return subscribeButton.getText();
|
||||
}
|
||||
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
||||
xmlns:g="urn:import:com.google.gwt.user.client.ui">
|
||||
<ui:with field="i18n" type="com.sap.sailing.gwt.ui.client.StringMessages" />
|
||||
<ui:with field="main" type="com.sap.sailing.gwt.common.client.SharedResources" />
|
||||
<ui:with field="local" type="com.sap.sailing.gwt.home.desktop.partials.subscription.SubscriptionResources"></ui:with>
|
||||
<ui:style>
|
||||
</ui:style>
|
||||
<g:HTMLPanel>
|
||||
<div class="{local.css.subscription}">
|
||||
<h1 ui:field="title" class="{local.css.title}"></h1>
|
||||
<h4 ui:field="description" class="{local.css.description}"></h4>
|
||||
<h3 ui:field="price" class="{local.css.price}"></h3>
|
||||
<g:FlowPanel ui:field="features" styleName="{local.css.features}"></g:FlowPanel>
|
||||
<g:Button styleName="{main.mainCss.button} {main.mainCss.buttonstrong} {main.mainCss.buttonprimary} {main.mainCss.buttonarrowrightwhite} {local.css.subscribe}" ui:field="subscribeButton" text="{i18n.subscribe}"/>
|
||||
</div>
|
||||
</g:HTMLPanel>
|
||||
</ui:UiBinder>
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
package com.sap.sailing.gwt.home.desktop.partials.subscription;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.FlowPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
|
||||
public class SubscriptionContainer extends Composite {
|
||||
|
||||
private static SubscriptionContainerUiBinder uiBinder = GWT.create(SubscriptionContainerUiBinder.class);
|
||||
|
||||
interface SubscriptionContainerUiBinder extends UiBinder<Widget, SubscriptionContainer> {
|
||||
}
|
||||
|
||||
public SubscriptionContainer() {
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
}
|
||||
|
||||
@UiField
|
||||
FlowPanel container;
|
||||
|
||||
public void addSubscription(Subscription subscription) {
|
||||
container.add(subscription);
|
||||
}
|
||||
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
||||
xmlns:g="urn:import:com.google.gwt.user.client.ui">
|
||||
<ui:with field="i18n" type="com.sap.sailing.gwt.ui.client.StringMessages" />
|
||||
<ui:with field="main" type="com.sap.sailing.gwt.common.client.SharedResources" />
|
||||
<ui:with field="local" type="com.sap.sailing.gwt.home.desktop.partials.subscription.SubscriptionResources"></ui:with>
|
||||
<ui:style>
|
||||
</ui:style>
|
||||
<g:HTMLPanel styleName="{main.mediaCss.stackenblochen}">
|
||||
<h1><ui:text from="{i18n.subscriptionPlanOverview}" /></h1>
|
||||
<g:FlowPanel ui:field="container" styleName="{local.css.container}"></g:FlowPanel>
|
||||
</g:HTMLPanel>
|
||||
</ui:UiBinder>
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package com.sap.sailing.gwt.home.desktop.partials.subscription;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.resources.client.CssResource;
|
||||
import com.sap.sailing.gwt.home.shared.SharedHomeResources;
|
||||
|
||||
public interface SubscriptionResources extends SharedHomeResources {
|
||||
|
||||
public static final SubscriptionResources INSTANCE = GWT.create(SubscriptionResources.class);
|
||||
|
||||
@Source("Subscription.gss")
|
||||
LocalCss css();
|
||||
|
||||
public interface LocalCss extends CssResource {
|
||||
String feature();
|
||||
String highlight();
|
||||
String subscription();
|
||||
String title();
|
||||
String description();
|
||||
String price();
|
||||
String features();
|
||||
String subscribe();
|
||||
String container();
|
||||
}
|
||||
}
|
||||
+8
-12
@@ -1,29 +1,25 @@
|
||||
package com.sap.sailing.gwt.home.shared.places.subscription;
|
||||
|
||||
import com.google.gwt.dom.client.Style.FontWeight;
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.FlowPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.sap.sse.security.ui.client.i18n.subscription.SubscriptionStringConstants;
|
||||
import com.sap.sailing.gwt.home.desktop.partials.subscription.Subscription;
|
||||
import com.sap.sailing.gwt.home.desktop.partials.subscription.SubscriptionContainer;
|
||||
import com.sap.sse.security.ui.shared.subscription.SubscriptionPlanDTO;
|
||||
|
||||
public class SubscriptionViewImpl extends Composite implements SubscriptionView {
|
||||
|
||||
private static SubscriptionStringConstants i18n = SubscriptionStringConstants.INSTANCE;
|
||||
private final FlowPanel container = new FlowPanel();
|
||||
private final SubscriptionContainer container = new SubscriptionContainer();
|
||||
|
||||
public SubscriptionViewImpl() {
|
||||
initWidget(container);
|
||||
container.getElement().getStyle().setMargin(5, Unit.EM);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addSubscriptionPlan(final SubscriptionPlanDTO plan, final boolean highlight) {
|
||||
final Label label = new Label(i18n.getString(plan.getNameMessageKey()));
|
||||
label.getElement().getStyle().setFontWeight(highlight ? FontWeight.BOLD : FontWeight.NORMAL);
|
||||
container.add(label);
|
||||
container.add(new Label(i18n.getString(plan.getDescMessageKey())));
|
||||
container.addSubscription(new Subscription(plan, highlight));
|
||||
container.addSubscription(new Subscription(plan, false));
|
||||
container.addSubscription(new Subscription(plan, highlight));
|
||||
container.addSubscription(new Subscription(plan, false));
|
||||
container.addSubscription(new Subscription(plan, false));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+8
-1
@@ -1,5 +1,7 @@
|
||||
package com.sap.sse.security.ui.client.i18n.subscription;
|
||||
|
||||
import java.util.MissingResourceException;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.i18n.client.ConstantsWithLookup;
|
||||
import com.google.gwt.i18n.client.LocalizableResource.DefaultLocale;
|
||||
@@ -10,7 +12,12 @@ public interface SubscriptionStringConstants extends ConstantsWithLookup {
|
||||
public static final SubscriptionStringConstants INSTANCE = GWT.create(SubscriptionStringConstants.class);
|
||||
|
||||
default String getString(final StringMessagesKey messageKey) {
|
||||
return getString(messageKey.getKey());
|
||||
try {
|
||||
return getString(messageKey.getKey());
|
||||
} catch (MissingResourceException e) {
|
||||
GWT.log("Cannot find resource with key '" + messageKey.getKey() + "'!");
|
||||
return "???" + messageKey.getKey() + "???";
|
||||
}
|
||||
}
|
||||
|
||||
String pro_plan_name();
|
||||
|
||||
Reference in New Issue
Block a user