/* * JBoss, Home of Professional Open Source. * Copyright 2006, Red Hat Middleware LLC, and individual contributors * as indicated by the @author tags. See the copyright.txt file in the * distribution for a full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jboss.bpm.console.client; import com.allen_sauer.gwt.log.client.Log; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.DeferredCommand; import com.mvc4g.client.Controller; import com.mvc4g.client.Event; import org.gwt.mosaic.ui.client.MessageBox; import org.jboss.bpm.console.client.common.Model; import org.jboss.bpm.console.client.common.ModelCommands; import org.jboss.bpm.console.client.common.ModelParts; import org.jboss.bpm.console.client.icons.ConsoleIconBundle; import org.jboss.bpm.console.client.util.ConsoleLog; import org.jboss.errai.bus.client.api.Message; import org.jboss.errai.bus.client.api.MessageCallback; import org.jboss.errai.bus.client.api.SubscribeListener; import org.jboss.errai.bus.client.framework.ClientMessageBus; import org.jboss.errai.bus.client.ErraiBus; import org.jboss.errai.bus.client.framework.SubscriptionEvent; import org.jboss.errai.bus.client.security.SecurityService; import org.jboss.errai.workspaces.client.framework.Registry; import org.jboss.errai.workspaces.client.api.annotations.DefaultBundle; import org.jboss.errai.workspaces.client.api.annotations.GroupOrder; /** * Main entry point for the BPM console module */ @GroupOrder("Tasks, Processes, Reporting, Runtime, Settings") @DefaultBundle(ConsoleIconBundle.class) public class ErraiApplication implements EntryPoint, SubscribeListener { public void onModuleLoad() { Log.setUncaughtExceptionHandler(); DeferredCommand.addCommand(new Command() { public void execute() { // hide splash image // move the loading div to background DOM.getElementById("splash_loading").getStyle().setProperty("display", "none"); DOM.getElementById("splash").getStyle().setProperty("zIndex", "-1"); onModuleLoad2(); } }); ErraiBus.get().subscribe(Model.SUBJECT, new MessageCallback() { public void callback(Message message) { Log.debug("Data model: " + message.getCommandType()); } }); } public void onModuleLoad2() { final ClientMessageBus bus = (ClientMessageBus) ErraiBus.get(); bus.addPostInitTask( new Runnable() { public void run() { Registry.get(SecurityService.class).setDeferredNotification(true); } } ); bus.addSubscribeListener(this); Controller mainController = new com.mvc4g.client.Controller(); Registry.set(Controller.class, mainController); // ------ // setup base urls String proxyUrl = null; if (!GWT.isScript()) { proxyUrl = GWT.getModuleBaseURL() + "xhp"; } final ConsoleConfig config = new ConsoleConfig(proxyUrl); ConsoleLog.debug("Console server: " + config.getConsoleServerUrl()); URLBuilder.configureInstance(config); // ------ ApplicationContext appContext = new ApplicationContext() { public void displayMessage(String message, boolean isError) { if(isError) MessageBox.error("Error", message); else MessageBox.alert("Warn", message); } public Authentication getAuthentication() { return Registry.get(Authentication.class); // set in login view } public ConsoleConfig getConfig() { return config; } public void refreshView() { } }; Registry.set(ApplicationContext.class, appContext); // ------ registerGlobalViewsAndActions(mainController); mainController.addAction("login", new LoginAction()); mainController.addAction(BootstrapAction.ID, new BootstrapAction()); mainController.addView("loginView", new LoginView()); // bootstrap and login mainController.handleEvent( new com.mvc4g.client.Event(BootstrapAction.ID, Boolean.TRUE) ); mainController.handleEvent(new Event("login", null)); } /** * Views and actions accessible from any component */ private void registerGlobalViewsAndActions(Controller controller) { // register global views and actions, available across editors //controller.addView(Header.ID, header); controller.addAction(LoadingStatusAction.ID, new LoadingStatusAction()); controller.addAction(BootstrapAction.ID, new BootstrapAction()); } public void onSubscribe(SubscriptionEvent event) { ConsoleLog.debug("New Subscription: "+event.getSubject()); } }