Subversion Repositories SmartDukaan

Rev

Rev 2119 | Rev 2359 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2105 ankur.sing 1
package in.shop2020.catalog.dashboard.client;
2
 
2126 ankur.sing 3
import in.shop2020.catalog.dashboard.shared.Item;
4
import in.shop2020.catalog.dashboard.shared.Utils;
5
 
2105 ankur.sing 6
import com.google.gwt.core.client.GWT;
7
import com.google.gwt.event.dom.client.ClickEvent;
8
import com.google.gwt.uibinder.client.UiBinder;
9
import com.google.gwt.uibinder.client.UiField;
10
import com.google.gwt.uibinder.client.UiHandler;
2126 ankur.sing 11
import com.google.gwt.user.client.Window;
12
import com.google.gwt.user.client.rpc.AsyncCallback;
2105 ankur.sing 13
import com.google.gwt.user.client.ui.Button;
14
import com.google.gwt.user.client.ui.ResizeComposite;
15
import com.google.gwt.user.client.ui.Widget;
16
 
17
public class ItemActions extends ResizeComposite{
18
 
19
    interface ItemActionsUiBinder extends UiBinder<Widget, ItemActions> {}
20
    private static ItemActionsUiBinder uiBinder = GWT.create(ItemActionsUiBinder.class);
2126 ankur.sing 21
    private final CatalogServiceAsync catalogService = GWT.create(CatalogService.class);
2105 ankur.sing 22
 
2126 ankur.sing 23
    private ItemDetails itemDetails;
2105 ankur.sing 24
 
2126 ankur.sing 25
    @UiField Button addItem, updateItem, phaseoutItem, activateItem, markAliveItem, pauseItem;
2105 ankur.sing 26
 
27
    public ItemActions(){
28
        initWidget(uiBinder.createAndBindUi(this));
29
    }
30
 
2126 ankur.sing 31
    @UiHandler("updateItem")
32
    void updateItem(ClickEvent event) {
33
        itemDetails.updateItem();
34
    }
35
 
2105 ankur.sing 36
    @UiHandler("addItem")
37
    void addItem(ClickEvent event) {
2126 ankur.sing 38
        ItemForm itemForm = new ItemForm();
39
        itemForm.center();
40
        itemForm.show();
2105 ankur.sing 41
    }
42
 
43
    @UiHandler("phaseoutItem")
44
    void phaseoutItem(ClickEvent event) {
2126 ankur.sing 45
        final long itemId = validateStatusChange(Utils.PHASED_OUT);
46
        if(itemId <= 0) {
47
            return;
48
        }
49
        catalogService.phaseoutItem(itemId, new AsyncCallback<Void>() {
50
            @Override
51
            public void onSuccess(Void result) {
52
                Window.alert("Item marked as PHASED OUT");
53
            }
54
            @Override
55
            public void onFailure(Throwable caught) {
56
                Window.alert("Error while marking item " + itemId + " PHASED OUT");
57
            }
58
        });
2105 ankur.sing 59
    }
60
 
61
    @UiHandler("activateItem")
62
    void activateItem(ClickEvent event) {
2126 ankur.sing 63
        final long itemId = validateStatusChange(Utils.ACTIVE);
64
        if(itemId <= 0) {
65
            return;
66
        }
67
        catalogService.activateItem(itemId, new AsyncCallback<Void>() {
68
            @Override
69
            public void onSuccess(Void result) {
70
                Window.alert("Item marked as ACTIVE");
71
            }
72
            @Override
73
            public void onFailure(Throwable caught) {
74
                Window.alert("Error while marking item " + itemId + " ACTIVE");
75
            }
76
        });
2105 ankur.sing 77
    }
78
 
2126 ankur.sing 79
    @UiHandler("pauseItem")
80
    void pauseItem(ClickEvent event) {
81
        final long itemId = validateStatusChange(Utils.PAUSED);
82
        if(itemId <= 0) {
83
            return;
84
        }
85
        catalogService.pauseItem(itemId, new AsyncCallback<Void>() {
86
            @Override
87
            public void onSuccess(Void result) {
88
                Window.alert("Item marked as PAUSED");
89
            }
90
            @Override
91
            public void onFailure(Throwable caught) {
92
                Window.alert("Error while marking item " + itemId + " PAUSED");
93
            }
94
        });
2105 ankur.sing 95
    }
2126 ankur.sing 96
 
97
    @UiHandler("markAliveItem")
98
    void markAsAlive(ClickEvent event) {
99
        final long itemId = validateStatusChange(Utils.IN_PROCESS);
100
        if(itemId <= 0) {
101
            return;
102
        }
103
        catalogService.markInProcess(itemId, new AsyncCallback<Void>() {
104
            @Override
105
            public void onSuccess(Void result) {
106
                Window.alert("Item marked as IN PROCESS");
107
            }
108
            @Override
109
            public void onFailure(Throwable caught) {
110
                Window.alert("Error while marking item " + itemId + " IN PROCESS");
111
            }
112
        });
2105 ankur.sing 113
    }
2126 ankur.sing 114
 
115
    public void setItemDetails(ItemDetails itemDetails) {
116
        this.itemDetails = itemDetails;
2105 ankur.sing 117
    }
118
 
2126 ankur.sing 119
    private long validateStatusChange(int toStatus) {
120
        final Item item = itemDetails.getItem();
121
        if(item == null) {
122
            Window.alert(getAlertString(toStatus)[0]);
123
            return -1;
124
        }
125
        if(!Utils.validateStatusChange(item.getItemStatusValue(), toStatus)) {
126
            Window.alert(getAlertString(toStatus)[1]);
127
            return -1;
128
        }
129
        return item.getId();
130
    }
131
 
132
    private String[] getAlertString(int toStatus) {
133
        String[] alertStr = {"", ""};
134
        switch(toStatus) {
135
        case Utils.PAUSED: {
136
            alertStr[0] = "Please select an ACTIVE item to mark PAUSED";
137
            alertStr[1] = "Cannot mark this item as PAUSED";
138
            break;
139
        }
140
        case Utils.IN_PROCESS: {
141
            alertStr[0] = "Please select a PHASED OUT item to mark IN PROCESS";
142
            alertStr[1] = "Cannot mark this item as IN PROCESS";
143
            break;
144
        }
145
        case Utils.ACTIVE: {
146
            alertStr[0] = "Please select a PAUSED item to mark ACTIVE";
147
            alertStr[1] = "Cannot mark this item as ACTIVE";
148
            break;
149
        }
150
        case Utils.PHASED_OUT: {
151
            alertStr[0] = "Please select an item to mark PHASED OUT";
152
            alertStr[1] = "Cannot mark this item as PHASED OUT";
153
            break;
154
        }
155
        }
156
        return alertStr;
157
    }
2105 ankur.sing 158
}
2126 ankur.sing 159