Skip to content

Commit

Permalink
redmine #9069
Browse files Browse the repository at this point in the history
  • Loading branch information
svuillet committed Sep 14, 2017
1 parent 4afdbdc commit 2806907
Show file tree
Hide file tree
Showing 16 changed files with 345 additions and 194 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,55 +25,29 @@
package com.silverpeas.mobile.client.apps.workflow;

import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.JavaScriptException;
import com.google.gwt.dom.client.Element;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.silverpeas.mobile.client.apps.documents.events.app.AbstractDocumentsAppEvent;
import com.silverpeas.mobile.client.apps.documents.events.app.DocumentsAppEventHandler;
import com.silverpeas.mobile.client.apps.documents.events.app.DocumentsLoadGedItemsEvent;
import com.silverpeas.mobile.client.apps.documents.events.app.DocumentsLoadPublicationEvent;
import com.silverpeas.mobile.client.apps.documents.events.pages.navigation.GedItemsLoadedEvent;
import com.silverpeas.mobile.client.apps.documents.events.pages.publication.PublicationLoadedEvent;
import com.silverpeas.mobile.client.apps.documents.pages.GedNavigationPage;
import com.silverpeas.mobile.client.apps.documents.pages.PublicationPage;
import com.silverpeas.mobile.client.apps.documents.resources.DocumentsMessages;
import com.silverpeas.mobile.client.apps.navigation.events.app.external.AbstractNavigationEvent;
import com.silverpeas.mobile.client.apps.navigation.events.app.external.NavigationAppInstanceChangedEvent;
import com.silverpeas.mobile.client.apps.navigation.events.app.external.NavigationEventHandler;
import com.silverpeas.mobile.client.apps.navigation.events.app.external.NavigationShowContentEvent;
import com.silverpeas.mobile.client.apps.workflow.events.app.AbstractWorkflowAppEvent;
import com.silverpeas.mobile.client.apps.workflow.events.app.WorkflowAppEventHandler;
import com.silverpeas.mobile.client.apps.workflow.events.app.WorkflowLoadInstancesEvent;
import com.silverpeas.mobile.client.apps.workflow.events.pages.WorkflowLoadedInstancesEvent;
import com.silverpeas.mobile.client.apps.workflow.pages.WorkflowPage;
import com.silverpeas.mobile.client.common.EventBus;
import com.silverpeas.mobile.client.common.Notification;
import com.silverpeas.mobile.client.common.ServicesLocator;
import com.silverpeas.mobile.client.common.app.App;
import com.silverpeas.mobile.client.common.event.ErrorEvent;
import com.silverpeas.mobile.client.common.mobil.MobilUtils;
import com.silverpeas.mobile.client.common.network.AsyncCallbackOnlineOnly;
import com.silverpeas.mobile.client.common.network.AsyncCallbackOnlineOrOffline;
import com.silverpeas.mobile.client.common.network.OfflineHelper;
import com.silverpeas.mobile.client.common.storage.LocalStorageHelper;
import com.silverpeas.mobile.client.components.IframePage;
import com.silverpeas.mobile.client.resources.ApplicationMessages;
import com.silverpeas.mobile.shared.dto.BaseDTO;
import com.silverpeas.mobile.shared.dto.ContentDTO;
import com.silverpeas.mobile.shared.dto.ContentsTypes;
import com.silverpeas.mobile.shared.dto.documents.AttachmentDTO;
import com.silverpeas.mobile.shared.dto.documents.PublicationDTO;
import com.silverpeas.mobile.shared.dto.navigation.ApplicationInstanceDTO;
import com.silverpeas.mobile.shared.dto.navigation.Apps;
import com.silverpeas.mobile.shared.dto.workflow.WorkflowInstanceDTO;

import java.util.ArrayList;
import java.util.List;
import com.silverpeas.mobile.shared.dto.workflow.WorkflowInstancesDTO;

public class WorkflowApp extends App implements NavigationEventHandler, WorkflowAppEventHandler {

private ApplicationMessages globalMsg;
private ApplicationInstanceDTO instance;


public WorkflowApp() {
Expand All @@ -96,20 +70,11 @@ public void stop() {
@Override
public void appInstanceChanged(NavigationAppInstanceChangedEvent event) {
if (event.getInstance().isWorkflow()) {
ServicesLocator.getServiceWorkflow().getInstances(event.getInstance().getId(), new AsyncCallback
<List<WorkflowInstanceDTO>>() {
@Override
public void onFailure(final Throwable throwable) {
EventBus.getInstance().fireEvent(new ErrorEvent(throwable));
}
this.instance = event.getInstance();

@Override
public void onSuccess(final List<WorkflowInstanceDTO> workflowInstanceDTOS) {
WorkflowPage page = new WorkflowPage();
page.setData(workflowInstanceDTOS);
page.show();
}
});
WorkflowPage page = new WorkflowPage();
page.show();
loadInstances(new WorkflowLoadInstancesEvent());
}
}

Expand All @@ -120,11 +85,19 @@ public void showContent(final NavigationShowContentEvent event) {

@Override
public void loadInstances(final WorkflowLoadInstancesEvent event) {
ServicesLocator.getServiceWorkflow().getInstances(instance.getId(), event.getRole(), new AsyncCallback
<WorkflowInstancesDTO>() {
@Override
public void onFailure(final Throwable throwable) {
EventBus.getInstance().fireEvent(new ErrorEvent(throwable));
}






@Override
public void onSuccess(final WorkflowInstancesDTO workflowInstanceDTOS) {
WorkflowLoadedInstancesEvent event = new WorkflowLoadedInstancesEvent();
event.setData(workflowInstanceDTOS);
EventBus.getInstance().fireEvent(event);
}
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@

public class WorkflowLoadInstancesEvent extends AbstractWorkflowAppEvent {

private String role = null;

public WorkflowLoadInstancesEvent() {
super();
}
Expand All @@ -35,4 +37,12 @@ public WorkflowLoadInstancesEvent() {
protected void dispatch(WorkflowAppEventHandler handler) {
handler.loadInstances(this);
}

public String getRole() {
return role;
}

public void setRole(final String role) {
this.role = role;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* Copyright (C) 2000 - 2017 Silverpeas
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* As a special exception to the terms and conditions of version 3.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* Open Source Software ("FLOSS") applications as described in Silverpeas's
* FLOSS exception. You should have received a copy of the text describing
* the FLOSS exception, and it is also available here:
* "http://www.silverpeas.org/docs/core/legal/floss_exception.html"
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/

package com.silverpeas.mobile.client.apps.workflow.events.pages;


import com.silverpeas.mobile.shared.dto.workflow.WorkflowInstancesDTO;

public class WorkflowLoadedInstancesEvent extends AbstractWorkflowPagesEvent {

private WorkflowInstancesDTO data;

public WorkflowLoadedInstancesEvent() {
super();
}

@Override
protected void dispatch(WorkflowPagesEventHandler handler) {
handler.loadInstances(this);
}

public WorkflowInstancesDTO getData() {
return data;
}

public void setData(final WorkflowInstancesDTO data) {
this.data = data;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,5 @@
import com.google.gwt.event.shared.EventHandler;

public interface WorkflowPagesEventHandler extends EventHandler{
void loadInstances(WorkflowLoadedInstancesEvent event);
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,44 +25,93 @@
package com.silverpeas.mobile.client.apps.workflow.pages;

import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Widget;
import com.silverpeas.mobile.client.apps.blog.events.app.BlogLoadEvent;
import com.silverpeas.mobile.client.apps.blog.events.pages.AbstractBlogPagesEvent;
import com.silverpeas.mobile.client.apps.blog.events.pages.BlogLoadedEvent;
import com.silverpeas.mobile.client.apps.blog.events.pages.BlogPagesEventHandler;
import com.silverpeas.mobile.client.apps.blog.resources.BlogMessages;
import com.silverpeas.mobile.client.apps.favorites.pages.widgets.AddToFavoritesButton;
import com.silverpeas.mobile.client.apps.workflow.events.app.WorkflowLoadInstancesEvent;
import com.silverpeas.mobile.client.apps.workflow.events.pages.AbstractWorkflowPagesEvent;
import com.silverpeas.mobile.client.apps.workflow.events.pages.WorkflowPagesEventHandler;
import com.silverpeas.mobile.client.apps.workflow.pages.widgets.WorkflowItem;
import com.silverpeas.mobile.client.apps.workflow.events.pages.WorkflowLoadedInstancesEvent;
import com.silverpeas.mobile.client.common.EventBus;
import com.silverpeas.mobile.client.components.UnorderedList;
import com.silverpeas.mobile.client.components.base.ActionsMenu;
import com.silverpeas.mobile.client.components.base.PageContent;
import com.silverpeas.mobile.shared.dto.ContentsTypes;
import com.silverpeas.mobile.shared.dto.blog.PostDTO;
import com.silverpeas.mobile.shared.dto.workflow.WorkflowInstanceDTO;
import com.silverpeas.mobile.shared.dto.workflow.WorkflowInstancesDTO;
import org.apache.poi.hssf.record.WindowOneRecord;

import java.util.List;
import java.util.Map;

public class WorkflowPage extends PageContent implements WorkflowPagesEventHandler {
public class WorkflowPage extends PageContent implements WorkflowPagesEventHandler, ChangeHandler {

private static WorkflowPageUiBinder uiBinder = GWT.create(WorkflowPageUiBinder.class);

@UiField UnorderedList instances;
@UiField FlexTable instances;
@UiField ActionsMenu actionsMenu;
@UiField ListBox roles;

private AddToFavoritesButton favorite = new AddToFavoritesButton();
private List<WorkflowInstanceDTO> data;

public void setData(final List<WorkflowInstanceDTO> data) {
this.data = data;
for (WorkflowInstanceDTO d : data) {
WorkflowItem item = new WorkflowItem();
item.setData(d);
instances.add(item);
private WorkflowInstancesDTO data = null;

private ClickHandler clickOnInstance = new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
Anchor link = (Anchor) event.getSource();
String id = link.getElement().getAttribute("data");
//TODO : display presentation form
}
};

@Override
public void onChange(final ChangeEvent changeEvent) {
WorkflowLoadInstancesEvent event = new WorkflowLoadInstancesEvent();
event.setRole(roles.getSelectedValue());
EventBus.getInstance().fireEvent(event);
}

@Override
public void loadInstances(final WorkflowLoadedInstancesEvent event) {
if (data == null) {
this.data = event.getData();
for (Map.Entry<String,String> role : data.getRoles().entrySet()) {
roles.addItem(role.getValue(), role.getKey());
}
} else {
instances.clear();
this.data = event.getData();
}

int c = 0;
for (String label : data.getHeaderLabels()) {
instances.setHTML(0, c, label);
c++;
}

int r = 1;
for (WorkflowInstanceDTO d : data.getInstances()) {
c = 0;
for (String value : d.getHeaderFieldsValues()) {
Anchor link = new Anchor();
link.setHref("javaScript:;");
link.setText(value);
link.setStylePrimaryName("workflow-anchor");
link.getElement().setId("inst" + r + c);
link.getElement().setAttribute("data", d.getId());
link.addClickHandler(clickOnInstance);
instances.setWidget(r,c,link);
c++;
}
r++;
}
}

Expand All @@ -72,11 +121,14 @@ interface WorkflowPageUiBinder extends UiBinder<Widget, WorkflowPage> {
public WorkflowPage() {
initWidget(uiBinder.createAndBindUi(this));
EventBus.getInstance().addHandler(AbstractWorkflowPagesEvent.TYPE, this);
roles.addChangeHandler(this);
}

@Override
public void stop() {
super.stop();
EventBus.getInstance().removeHandler(AbstractWorkflowPagesEvent.TYPE, this);
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
<g:HTMLPanel ui:field="container" styleName="content ui-content ui-body-a">
<b:ActionsMenu ui:field="actionsMenu"/>
<h2 class="appHeader"></h2>
<l:UnorderedList ui:field="instances" styleName="carroussel-news"/>
<g:ListBox ui:field="roles" styleName="workflow-roles"/>
<g:FlexTable ui:field="instances" styleName="workflow-list"/>
</g:HTMLPanel>
</ui:UiBinder>
Loading

0 comments on commit 2806907

Please sign in to comment.