提交 1e538124 编写于 作者: J jbarrez

ACT-696: externalized all text labels

上级 b1c83dba
......@@ -21,10 +21,13 @@ import java.text.SimpleDateFormat;
*/
public interface Constant {
// Resource bundle name
static final String RESOURCE_BUNDLE = "messages";
// Date formatting
public static final DateFormat DEFAULT_DATE_FORMATTER = new SimpleDateFormat("dd MMM yyyy - hh:mm");
static final DateFormat DEFAULT_DATE_FORMATTER = new SimpleDateFormat("dd MMM yyyy - hh:mm");
// Default diagram image extension, when name cannot be deducted from resource name
public static final String DEFAULT_DIAGRAM_IMAGE_EXTENSION = "png";
static final String DEFAULT_DIAGRAM_IMAGE_EXTENSION = "png";
}
......@@ -15,6 +15,8 @@
*/
package org.activiti.explorer;
import java.util.ResourceBundle;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
......@@ -41,16 +43,21 @@ public class ExplorerApplication extends Application implements HttpServletReque
LogUtil.readJavaUtilLoggingConfigFromClasspath();
}
private static ThreadLocal<ExplorerApplication> current = new ThreadLocal<ExplorerApplication>();
protected static ThreadLocal<ExplorerApplication> current = new ThreadLocal<ExplorerApplication>();
protected MainWindow mainWindow;
protected ResourceBundle messages;
public void init() {
initResourceBundle();
this.mainWindow = new MainWindow();
setMainWindow(mainWindow);
mainWindow.showLoginPage();
}
protected void initResourceBundle() {
this.messages = ResourceBundle.getBundle(Constant.RESOURCE_BUNDLE, getLocale());
}
/**
* Required to support multiple browser windows/tabs,
* see http://vaadin.com/web/joonas/wiki/-/wiki/Main/Supporting%20Multible%20Tabs
......@@ -101,6 +108,12 @@ public class ExplorerApplication extends Application implements HttpServletReque
getMainWindow().addWindow(window);
}
// Localisation
public String getMessage(String key) {
return messages.getString(key);
}
// HttpServletRequestListener -------------------------------------------------------------------
public void onRequestStart(HttpServletRequest request, HttpServletResponse response) {
......
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.activiti.explorer;
/**
* @author Joram Barrez
*/
public interface Messages {
// General
static final String APP_TITLE = "app.title";
// Login
static final String LOGIN_USERNAME = "login.username";
static final String LOGIN_PASSWORD = "login.password";
static final String LOGIN_BUTTON = "login.button";
static final String LOGIN_FAILED_HEADER = "login.failed.header";
static final String LOGIN_FAILED_INVALID = "login.failed.invalid";
// Header
static final String HEADER_SEARCHBOX = "header.searchbox";
static final String HEADER_LOGOUT = "header.logout";
// Main menu
static final String MAIN_MENU_TASKS = "main.menu.tasks";
static final String MAIN_MENU_FLOWS = "main.menu.flows";
static final String MAIN_MENU_MANAGEMENT = "main.menu.management";
// Profile
static final String PROFILE_ABOUT = "profile.about";
static final String PROFILE_NAME = "profile.name";
static final String PROFILE_JOBTITLE = "profile.jobtitle";
static final String PROFILE_BIRTHDATE = "profile.birthdate";
static final String PROFILE_LOCATION = "profile.location";
static final String PROFILE_CONTACT = "profile.contact";
static final String PROFILE_EMAIL = "profile.email";
static final String PROFILE_PHONE = "profile.phone";;
static final String PROFILE_TWITTER = "profile.twitter";
static final String PROFILE_SKYPE = "profile.skype";
static final String PROFILE_ACCOUNTS = "profile.accounts";
// Task menu
static final String TASK_MENU_INBOX = "task.menu.inbox";
static final String TASK_MENU_QUEUED = "task.menu.queued";
// Task details
static final String TASK_CREATED = "task.created";
static final String TASK_DUEDATE = "task.duedate";
static final String TASK_COMPLETE = "task.complete";
static final String TASK_COMPLETED = "task.task.completed";
static final String TASK_RESET_FORM = "task.form.reset";
static final String TASK_ADD_COMMENT = "task.comment.add";
static final String TASK_COMMENT_POPUP_HEADER = "task.comment.popup.header";
// Flow menu
static final String FLOW_MENU_MY_FLOWS = "flow.menu.my";
static final String FLOW_MENU_LAUNCH_FLOW = "flow.menu.launch";
// Flow page
static final String FLOW_CATEGORY = "flow.category";
static final String FLOW_VERSION = "flow.version";
static final String FLOW_DEPLOY_TIME = "flow.deploy.time";
static final String FLOW_HEADER_DIAGRAM = "flow.header.diagram";
static final String FLOW_NO_DIAGRAM = "flow.no.diagram";
static final String FLOW_START = "flow.start";
static final String FLOW_STARTED_NOTIFICATIOn = "flow.started.notification";
// Management menu
static final String MGMT_MENU_DATABASE = "management.menu.database";
static final String MGMT_MENU_DEPLOYMENTS = "management.menu.deployments";
static final String MGMT_MENU_JOBS = "management.menu.jobs";
static final String MGMT_MENU_DEPLOYMENTS_SHOW_ALL = "management.menu.deployments.show.all";
static final String MGMT_MENU_DEPLOYMENTS_UPLOAD = "management.menu.deployments.upload";
// Job page
static final String JOB_EXECUTE = "job.execute";
static final String JOB_HEADER_EXECUTION = "job.header.execution";
static final String JOB_RETRIES = "job.retries";
static final String JOB_NO_RETRIES = "job.no.retries";
static final String JOB_DEFAULT_NAME = "job.default.name";
static final String JOB_TIMER = "job.timer";
static final String JOB_MESSAGE = "job.message";
static final String JOB_DUEDATE = "job.duedate";
static final String JOB_NO_DUEDATE = "job.no.dudedate";
static final String JOB_ERROR = "job.error";
static final String JOB_NOT_EXECUTED = "job.not.executed";
// Deployment page
static final String DEPLOYMENT_DELETE = "deployment.delete";
static final String DEPLOYMENT_CREATE_TIME = "deployment.create.time";
static final String DEPLOYMENT_HEADER_DEFINITIONS = "deployment.header.definitions";
static final String DEPLOYMENT_HEADER_RESOURCES = "deployment.header.resources";
static final String DEPLOYMENT_UPLOAD = "deployment.upload";
static final String DEPLOYMENT_UPLOAD_DESCRIPTION = "deployment.upload.description";
// Database page
static final String DATABASE_NO_ROWS = "database.no.rows";
// Upload
static final String UPLOAD_SELECT = "upload.select";
static final String UPLOAD_DROP = "upload.drop";
}
......@@ -165,6 +165,8 @@ public class BootProcessEngineContextListener implements ServletContextListener
fozzie.setPassword("fozzie");
identityService.saveUser(fozzie);
identityService.createMembership("fozzie", "management");
byte[] pictureBytes = IoUtil.readInputStream(this.getClass().getClassLoader().getResourceAsStream("org/activiti/explorer/images/fozzie.jpg"), null);
Picture picture = new Picture(pictureBytes, "image/jpeg");
identityService.setUserPicture("fozzie", picture);
......
......@@ -21,75 +21,76 @@ package org.activiti.explorer.ui;
public interface ExplorerLayout {
// Application theme
public static final String THEME = "activiti";
static final String THEME = "activiti";
// Custom layouts (found in /VAADIN/themes/${THEME}/layouyts
public static final String CUSTOM_LAYOUT_DEFAULT = "activiti";
public static final String CUSTOM_LAYOUT_LOGIN = "login";
static final String CUSTOM_LAYOUT_DEFAULT = "activiti";
static final String CUSTOM_LAYOUT_LOGIN = "login";
// Locations defined in the layout .html files
public static final String LOCATION_LOGIN = "login-content";
public static final String LOCATION_CONTENT = "content";
public static final String LOCATION_SEARCH = "search";
public static final String LOCATION_MAIN_MENU = "main-menu";
public static final String LOCATION_HIDDEN = "hidden";
static final String LOCATION_LOGIN = "login-content";
static final String LOCATION_CONTENT = "content";
static final String LOCATION_SEARCH = "search";
static final String LOCATION_LOGOUT = "logout";
static final String LOCATION_MAIN_MENU = "main-menu";
static final String LOCATION_HIDDEN = "hidden";
// ----------
// Css styles
// ----------
// General
public static final String STYLE_SMALL_TEXTFIELD = "small";
public static final String STYLE_SEARCHBOX = "searchBox";
public static final String STYLE_LOGOUT_BUTTON = "logout";
public static final String STYLE_USER_PROFILE = "user";
public static final String STYLE_LABEL_BOLD = "bold";
static final String STYLE_SMALL_TEXTFIELD = "small";
static final String STYLE_SEARCHBOX = "searchBox";
static final String STYLE_LOGOUT_BUTTON = "logout";
static final String STYLE_USER_PROFILE = "user";
static final String STYLE_LABEL_BOLD = "bold";
//Forms
public static final String STYLE_FORMPROPERTY_READONLY = "formprop-readonly";
public static final String STYLE_FORMPROPERTY_LABEL = "formprop-label";
static final String STYLE_FORMPROPERTY_READONLY = "formprop-readonly";
static final String STYLE_FORMPROPERTY_LABEL = "formprop-label";
// Login page
public static final String STYLE_LOGIN_PAGE = "login-general";
static final String STYLE_LOGIN_PAGE = "login-general";
// Menu bar
public static final String STYLE_MENUBAR = "menubar";
public static final String STYLE_MENUBAR_BUTTON = "menu-button";
static final String STYLE_MENUBAR = "menubar";
static final String STYLE_MENUBAR_BUTTON = "menu-button";
// Action Bar
public static final String STYLE_ACTION_BAR = "action-bar";
static final String STYLE_ACTION_BAR = "action-bar";
// Profile page
public static final String STYLE_PROFILE_LAYOUT = "profile-layout";
public static final String STYLE_PROFILE_HEADER = "profile-header";
public static final String STYLE_PROFILE_FIELD = "profile-field";
public static final String STYLE_PROFILE_PICTURE = "profile-picture";
static final String STYLE_PROFILE_LAYOUT = "profile-layout";
static final String STYLE_PROFILE_HEADER = "profile-header";
static final String STYLE_PROFILE_FIELD = "profile-field";
static final String STYLE_PROFILE_PICTURE = "profile-picture";
// Task pages
public static final String STYLE_TASK_LIST = "task-list";
public static final String STYLE_TASK_DETAILS = "task-details";
public static final String STYLE_TASK_DETAILS_HEADER = "task-details-header";
public static final String STYLE_TASK_COMMENT = "task-comment";
public static final String STYLE_TASK_COMMENT_AUTHOR = "task-comment-author";
public static final String STYLE_TASK_COMMENT_TIME = "task-comment-time";
public static final String STYLE_TASK_COMMENT_PICTURE = "task-comment-picture";
static final String STYLE_TASK_LIST = "task-list";
static final String STYLE_TASK_DETAILS = "task-details";
static final String STYLE_TASK_DETAILS_HEADER = "task-details-header";
static final String STYLE_TASK_COMMENT = "task-comment";
static final String STYLE_TASK_COMMENT_AUTHOR = "task-comment-author";
static final String STYLE_TASK_COMMENT_TIME = "task-comment-time";
static final String STYLE_TASK_COMMENT_PICTURE = "task-comment-picture";
// Flow pages
public static final String STYLE_PROCESS_DEFINITION_LIST = "proc-def-list";
public static final String STYLE_PROCESS_DEFINITION_DETAILS_HEADER = "proc-def-details-header";
static final String STYLE_PROCESS_DEFINITION_LIST = "proc-def-list";
static final String STYLE_PROCESS_DEFINITION_DETAILS_HEADER = "proc-def-details-header";
// Database page
public static final String STYLE_DATABASE_DETAILS = "database-details";
public static final String STYLE_DATABASE_TABLE_ROW = "database-table-row";
static final String STYLE_DATABASE_DETAILS = "database-details";
static final String STYLE_DATABASE_TABLE_ROW = "database-table-row";
// Deployment page
public static final String STYLE_DEPLOYMENT_DETAILS_HEADER = "deployment-details-header";
public static final String STYLE_DEPLOYMENT_UPLOAD_DESCRIPTION = "upload-description";
public static final String STYLE_DEPLOYMENT_UPLOAD_BUTTON = "upload-button";
static final String STYLE_DEPLOYMENT_DETAILS_HEADER = "deployment-details-header";
static final String STYLE_DEPLOYMENT_UPLOAD_DESCRIPTION = "upload-description";
static final String STYLE_DEPLOYMENT_UPLOAD_BUTTON = "upload-button";
// Jobs page
public static final String STYLE_JOB_DETAILS_HEADER = "job-details-header";
public static final String STYLE_JOB_EXCEPTION_MESSAGE = "job-exception-message";
public static final String STYLE_JOB_EXCEPTION_TRACE = "job-exception-trace";
static final String STYLE_JOB_DETAILS_HEADER = "job-details-header";
static final String STYLE_JOB_EXCEPTION_MESSAGE = "job-exception-message";
static final String STYLE_JOB_EXCEPTION_TRACE = "job-exception-trace";
}
......@@ -15,6 +15,7 @@ package org.activiti.explorer.ui;
import org.activiti.engine.identity.User;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import org.activiti.explorer.ui.profile.ProfilePage;
import com.vaadin.ui.Button;
......@@ -47,7 +48,7 @@ public class MainLayout extends CustomLayout {
protected void initSearchBox() {
TextField searchBox = new TextField();
searchBox.setInputPrompt("Search tasks");
searchBox.setInputPrompt(ExplorerApplication.getCurrent().getMessage(Messages.HEADER_SEARCHBOX));
searchBox.addStyleName(ExplorerLayout.STYLE_SMALL_TEXTFIELD);
searchBox.addStyleName(ExplorerLayout.STYLE_SEARCHBOX);
addComponent(searchBox, ExplorerLayout.LOCATION_SEARCH);
......@@ -73,7 +74,7 @@ public class MainLayout extends CustomLayout {
});
// logout button
Button logout = new Button("Logout");
Button logout = new Button(ExplorerApplication.getCurrent().getMessage(Messages.HEADER_LOGOUT));
logout.setStyleName(Reindeer.BUTTON_LINK);
logout.addStyleName(ExplorerLayout.STYLE_LOGOUT_BUTTON);
logout.setIcon(Images.WHITE_DIVIDER);
......@@ -88,7 +89,7 @@ public class MainLayout extends CustomLayout {
logoutGrid.addComponent(logout, 1, 0);
// Add logout grid to header
addComponent(logoutGrid, "logout");
addComponent(logoutGrid, ExplorerLayout.LOCATION_LOGOUT);
}
protected void initMainMenuBar() {
......
......@@ -14,6 +14,7 @@
package org.activiti.explorer.ui;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import org.activiti.explorer.ui.flow.FlowPage;
import org.activiti.explorer.ui.management.db.DatabasePage;
import org.activiti.explorer.ui.task.TaskInboxPage;
......@@ -34,29 +35,27 @@ public class MainMenuBar extends MenuBar {
public MainMenuBar() {
super();
Button taskButton = createMenuBarButton("Tasks");
Button taskButton = createMenuBarButton(ExplorerApplication.getCurrent().getMessage(Messages.MAIN_MENU_TASKS));
taskButton.addListener(new ClickListener() {
public void buttonClick(ClickEvent event) {
ExplorerApplication.getCurrent().switchView(new TaskInboxPage());
}
});
Button flowButton = createMenuBarButton("Flows");
Button flowButton = createMenuBarButton(ExplorerApplication.getCurrent().getMessage(Messages.MAIN_MENU_FLOWS));
flowButton.addListener(new ClickListener() {
public void buttonClick(ClickEvent event) {
ExplorerApplication.getCurrent().switchView(new FlowPage());
}
});
Button managementButton = createMenuBarButton("Management");
Button managementButton = createMenuBarButton(ExplorerApplication.getCurrent().getMessage(Messages.MAIN_MENU_MANAGEMENT));
managementButton.addListener(new ClickListener() {
public void buttonClick(ClickEvent event) {
ExplorerApplication.getCurrent().switchView(new DatabasePage());
}
});
createMenuBarButton("Reports");
fillRemainingSpace();
}
......
......@@ -12,6 +12,8 @@
*/
package org.activiti.explorer.ui;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import org.activiti.explorer.navigation.NavigationFragmentChangeListener;
import org.activiti.explorer.navigation.UriFragment;
import org.activiti.explorer.ui.login.LoginPage;
......@@ -33,7 +35,7 @@ public class MainWindow extends Window {
protected boolean showingLoginPage;
public MainWindow() {
super("Explorer - The Next generation");
super(ExplorerApplication.getCurrent().getMessage(Messages.APP_TITLE));
setTheme(ExplorerLayout.THEME);
}
......
......@@ -13,6 +13,9 @@
package org.activiti.explorer.ui.flow;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import com.vaadin.ui.MenuBar;
......@@ -29,8 +32,8 @@ public class FlowMenuBar extends MenuBar {
setWidth("100%");
addItem("My Flows", null);
addItem("Launch Flow", null);
addItem(ExplorerApplication.getCurrent().getMessage(Messages.FLOW_MENU_MY_FLOWS), null);
addItem(ExplorerApplication.getCurrent().getMessage(Messages.FLOW_MENU_LAUNCH_FLOW), null);
}
}
......@@ -19,6 +19,7 @@ import org.activiti.engine.form.StartFormData;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import org.activiti.explorer.ui.ExplorerLayout;
import org.activiti.explorer.ui.flow.listener.StartFlowClickListener;
import org.activiti.explorer.ui.form.FormPropertiesForm;
......@@ -141,7 +142,7 @@ public class ProcessDefinitionDetailPanel extends Panel {
actionsContainer.setSizeFull();
actionsContainer.setSpacing(true);
startFlowButton = new Button("Start flow");
startFlowButton = new Button(ExplorerApplication.getCurrent().getMessage(Messages.FLOW_START));
startFlowButton.addListener(new StartFlowClickListener(processDefinition, flowPage));
actionsContainer.addComponent(startFlowButton);
......@@ -159,7 +160,7 @@ public class ProcessDefinitionDetailPanel extends Panel {
protected void initCategory() {
if(processDefinition.getCategory() != null) {
categoryLabel = new Label("Category: " + processDefinition.getCategory());
categoryLabel = new Label(ExplorerApplication.getCurrent().getMessage(Messages.FLOW_CATEGORY) + processDefinition.getCategory());
categoryLabel.addStyleName(Reindeer.LABEL_SMALL);
addComponent(categoryLabel);
}
......
......@@ -17,7 +17,8 @@ import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.explorer.Constant;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import org.activiti.explorer.ui.ExplorerLayout;
import org.activiti.explorer.ui.Images;
......@@ -82,7 +83,7 @@ public class ProcessDefinitionInfoComponent extends VerticalLayout {
timeDetails.setComponentAlignment(grid, Alignment.MIDDLE_LEFT);
// Version
Label version = new Label("Version " + processDefinition.getVersion());
Label version = new Label(ExplorerApplication.getCurrent().getMessage(Messages.FLOW_VERSION) + processDefinition.getVersion());
version.addStyleName(ExplorerLayout.STYLE_LABEL_BOLD);
version.setSizeUndefined();
grid.addComponent(version);
......@@ -90,7 +91,7 @@ public class ProcessDefinitionInfoComponent extends VerticalLayout {
// Deployment time
if (deployment.getDeploymentTime() != null) {
Label createTime = new Label("Deployed " + new PrettyTime().format(deployment.getDeploymentTime()));
Label createTime = new Label(ExplorerApplication.getCurrent().getMessage(Messages.FLOW_DEPLOY_TIME) + new PrettyTime().format(deployment.getDeploymentTime()));
createTime.addStyleName(ExplorerLayout.STYLE_LABEL_BOLD);
createTime.setSizeUndefined();
grid.addComponent(createTime);
......@@ -106,7 +107,7 @@ public class ProcessDefinitionInfoComponent extends VerticalLayout {
protected void initImage() {
VerticalLayout processImageContainer = new VerticalLayout();
Label processTitle = new Label("Flow Image");
Label processTitle = new Label(ExplorerApplication.getCurrent().getMessage(Messages.FLOW_HEADER_DIAGRAM));
processTitle.addStyleName(ExplorerLayout.STYLE_PROCESS_DEFINITION_DETAILS_HEADER);
processImageContainer.addComponent(processTitle);
......@@ -119,7 +120,8 @@ public class ProcessDefinitionInfoComponent extends VerticalLayout {
embedded.setType(Embedded.TYPE_IMAGE);
processImageContainer.addComponent(embedded);
} else {
Label noImageAvailable = new Label("No image available for this flow");
Label noImageAvailable = new Label(ExplorerApplication.getCurrent().getMessage(Messages.FLOW_NO_DIAGRAM));
noImageAvailable.addStyleName(Reindeer.LABEL_SMALL);
processImageContainer.addComponent(noImageAvailable);
}
......
......@@ -13,6 +13,8 @@
package org.activiti.explorer.ui.flow.listener;
import java.text.MessageFormat;
import org.activiti.engine.FormService;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RuntimeService;
......@@ -20,6 +22,7 @@ import org.activiti.engine.form.StartFormData;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import org.activiti.explorer.ui.flow.FlowPage;
import com.vaadin.ui.Button.ClickEvent;
......@@ -58,7 +61,8 @@ public class StartFlowClickListener implements ClickListener {
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinition.getId());
// Show notification of success
ExplorerApplication.getCurrent().getMainWindow().showNotification("Process '" + processDefinition.getName() + "' has been started");
ExplorerApplication.getCurrent().getMainWindow().showNotification(MessageFormat.format(
ExplorerApplication.getCurrent().getMessage(Messages.FLOW_STARTED_NOTIFICATIOn), processDefinition.getName()));
}
......
......@@ -12,6 +12,8 @@
*/
package org.activiti.explorer.ui.login;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import org.activiti.explorer.ui.ExplorerLayout;
import com.vaadin.ui.LoginForm;
......@@ -33,9 +35,9 @@ public class CustomLoginForm extends LoginForm {
protected static final String STYLE_LOGIN_BUTTON = "login-button";
public CustomLoginForm() {
usernameCaption = "User ID";
passwordCaption = "Password";
submitCaption = "Log in";
usernameCaption = ExplorerApplication.getCurrent().getMessage(Messages.LOGIN_USERNAME);
passwordCaption = ExplorerApplication.getCurrent().getMessage(Messages.LOGIN_PASSWORD);
submitCaption = ExplorerApplication.getCurrent().getMessage(Messages.LOGIN_BUTTON);
}
// Hack-alert !! See explanation at http://vaadin.com/book/-/page/components.loginform.html
......
......@@ -16,6 +16,7 @@ import org.activiti.engine.IdentityService;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.identity.User;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import org.activiti.explorer.ui.ExplorerLayout;
import com.vaadin.ui.CustomLayout;
......@@ -69,7 +70,10 @@ public class LoginPage extends CustomLayout {
ExplorerApplication.getCurrent().showDefaultContent();
} else {
refreshUi();
ExplorerApplication.getCurrent().showErrorNotification("Could not log you in", "Invalid user id and/or password");
ExplorerApplication.getCurrent().showErrorNotification(
ExplorerApplication.getCurrent().getMessage(Messages.LOGIN_FAILED_HEADER),
ExplorerApplication.getCurrent().getMessage(Messages.LOGIN_FAILED_INVALID)
);
}
}
}
......
......@@ -13,6 +13,7 @@
package org.activiti.explorer.ui.management;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import org.activiti.explorer.ui.management.db.DatabasePage;
import org.activiti.explorer.ui.management.deployment.DeploymentPage;
import org.activiti.explorer.ui.management.deployment.NewDeploymentListener;
......@@ -31,24 +32,24 @@ public class ManagementMenuBar extends MenuBar {
setWidth("100%");
// Database
MenuItem databaseItem = addItem("Database", new Command() {
MenuItem databaseItem = addItem(ExplorerApplication.getCurrent().getMessage(Messages.MGMT_MENU_DATABASE), new Command() {
public void menuSelected(MenuItem selectedItem) {
ExplorerApplication.getCurrent().switchView(new DatabasePage());
}
});
// Deployments
MenuItem deploymentsItem = addItem("Deployments", null);
MenuItem deploymentsItem = addItem(ExplorerApplication.getCurrent().getMessage(Messages.MGMT_MENU_DEPLOYMENTS), null);
deploymentsItem.addItem("Show all", new Command() {
deploymentsItem.addItem(ExplorerApplication.getCurrent().getMessage(Messages.MGMT_MENU_DEPLOYMENTS_SHOW_ALL), new Command() {
public void menuSelected(MenuItem selectedItem) {
ExplorerApplication.getCurrent().switchView(new DeploymentPage());
}
});
deploymentsItem.addItem("Upload new", new NewDeploymentListener());
deploymentsItem.addItem(ExplorerApplication.getCurrent().getMessage(Messages.MGMT_MENU_DEPLOYMENTS_UPLOAD), new NewDeploymentListener());
// Jobs
addItem("Jobs", new Command() {
addItem(ExplorerApplication.getCurrent().getMessage(Messages.MGMT_MENU_JOBS), new Command() {
private static final long serialVersionUID = 3038274253757975888L;
public void menuSelected(MenuItem selectedItem) {
......
......@@ -15,6 +15,8 @@ package org.activiti.explorer.ui.management.db;
import org.activiti.engine.ManagementService;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.management.TableMetaData;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import org.activiti.explorer.data.LazyLoadingContainer;
import org.activiti.explorer.data.LazyLoadingQuery;
import org.activiti.explorer.ui.ExplorerLayout;
......@@ -81,8 +83,9 @@ public class DatabaseDetailPanel extends VerticalLayout {
}
} else {
Label noDataLabel = new Label("Table contains no rows");
Label noDataLabel = new Label(ExplorerApplication.getCurrent().getMessage(Messages.DATABASE_NO_ROWS));
noDataLabel.addStyleName(ExplorerLayout.STYLE_DATABASE_DETAILS);
noDataLabel.addStyleName(Reindeer.LABEL_SMALL);
addComponent(noDataLabel);
setExpandRatio(noDataLabel, 1.0f);
}
......
......@@ -21,6 +21,7 @@ import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import org.activiti.explorer.ui.ExplorerLayout;
import org.activiti.explorer.ui.Images;
import org.activiti.explorer.ui.flow.FlowPage;
......@@ -76,7 +77,7 @@ public class DeploymentDetailPanel extends Panel {
layout.addComponent(nameLabel);
// Delete button
Button deleteButton = new Button("Delete");
Button deleteButton = new Button(ExplorerApplication.getCurrent().getMessage(Messages.DEPLOYMENT_DELETE));
deleteButton.setIcon(Images.DELETE);
deleteButton.addStyleName(Reindeer.BUTTON_LINK);
layout.addComponent(deleteButton);
......@@ -100,7 +101,7 @@ public class DeploymentDetailPanel extends Panel {
Embedded clockImage = new Embedded(null, Images.CLOCK);
timeDetails.addComponent(clockImage);
Label timeLabel = new Label("Deployed " + new PrettyTime().format(deployment.getDeploymentTime()));
Label timeLabel = new Label(ExplorerApplication.getCurrent().getMessage(Messages.DEPLOYMENT_CREATE_TIME) + new PrettyTime().format(deployment.getDeploymentTime()));
timeDetails.addComponent(timeLabel);
timeDetails.setComponentAlignment(timeLabel, Alignment.MIDDLE_CENTER);
}
......@@ -114,7 +115,7 @@ public class DeploymentDetailPanel extends Panel {
if (processDefinitions.size() > 0) {
// Header
Label processDefinitionHeader = new Label("Process Definitions");
Label processDefinitionHeader = new Label(ExplorerApplication.getCurrent().getMessage(Messages.DEPLOYMENT_HEADER_DEFINITIONS));
processDefinitionHeader.addStyleName(ExplorerLayout.STYLE_DEPLOYMENT_DETAILS_HEADER);
processDefinitionHeader.setWidth("95%");
addComponent(processDefinitionHeader);
......@@ -152,7 +153,7 @@ public class DeploymentDetailPanel extends Panel {
Collections.sort(resourceNames); // small nr of elements, so we can do it in-memory
if (resourceNames.size() > 0) {
Label resourceHeader = new Label("Resources");
Label resourceHeader = new Label(ExplorerApplication.getCurrent().getMessage(Messages.DEPLOYMENT_HEADER_RESOURCES));
resourceHeader.setWidth("95%");
resourceHeader.addStyleName(ExplorerLayout.STYLE_DEPLOYMENT_DETAILS_HEADER);
addComponent(resourceHeader);
......
......@@ -13,6 +13,7 @@
package org.activiti.explorer.ui.management.deployment;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import com.vaadin.ui.MenuBar.Command;
import com.vaadin.ui.MenuBar.MenuItem;
......@@ -28,8 +29,8 @@ public class NewDeploymentListener implements Command {
public void menuSelected(MenuItem selectedItem) {
DeploymentUploadReceiver receiver = new DeploymentUploadReceiver();
UploadPopupWindow uploadPopupWindow = new UploadPopupWindow(
"Upload new Deployment",
"Select a file (.bar, .zip or .bpmn20.xml) or drop a file in the rectangle below",
ExplorerApplication.getCurrent().getMessage(Messages.DEPLOYMENT_UPLOAD),
ExplorerApplication.getCurrent().getMessage(Messages.DEPLOYMENT_UPLOAD_DESCRIPTION),
receiver);
// The receiver also acts as a listener for the end of the upload
......
......@@ -17,6 +17,7 @@ import java.util.ArrayList;
import java.util.List;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import org.activiti.explorer.ui.ExplorerLayout;
import com.vaadin.event.dd.DragAndDropEvent;
......@@ -102,7 +103,7 @@ public class UploadPopupWindow extends Window
protected void addUpload() {
this.upload = new Upload(null, receiver);
upload.addStyleName(ExplorerLayout.STYLE_DEPLOYMENT_UPLOAD_BUTTON);
upload.setButtonCaption("Choose a file");
upload.setButtonCaption(ExplorerApplication.getCurrent().getMessage(Messages.UPLOAD_SELECT));
upload.setImmediate(true);
layout.addComponent(upload);
layout.setComponentAlignment(upload, Alignment.MIDDLE_CENTER);
......@@ -130,7 +131,7 @@ public class UploadPopupWindow extends Window
layout.addComponent(dragAndDropWrapper);
layout.setComponentAlignment(dragAndDropWrapper, Alignment.MIDDLE_CENTER);
Label dropLabel = new Label("Drop file here");
Label dropLabel = new Label(ExplorerApplication.getCurrent().getMessage(Messages.UPLOAD_DROP));
dropLabel.setSizeUndefined();
dropPanel.addComponent(dropLabel);
((VerticalLayout)dropPanel.getContent()).setComponentAlignment(dropLabel, Alignment.MIDDLE_CENTER);
......
......@@ -20,6 +20,7 @@ import org.activiti.engine.impl.runtime.TimerEntity;
import org.activiti.engine.runtime.Job;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Images;
import org.activiti.explorer.Messages;
import org.activiti.explorer.ui.ExplorerLayout;
import com.ocpsoft.pretty.time.PrettyTime;
......@@ -72,7 +73,7 @@ public class JobDetailPanel extends Panel {
layout.addComponent(nameLabel);
// Execute button
Button executeButton = new Button("Execute");
Button executeButton = new Button(ExplorerApplication.getCurrent().getMessage(Messages.JOB_EXECUTE));
executeButton.setIcon(Images.EXECUTE);
executeButton.addStyleName(Reindeer.BUTTON_LINK);
layout.addComponent(executeButton);
......@@ -97,11 +98,11 @@ public class JobDetailPanel extends Panel {
protected String getJobLabel(Job theJob) {
// Try figuring out the type
if(theJob instanceof TimerEntity) {
return "Timer job " + theJob.getId();
return ExplorerApplication.getCurrent().getMessage(Messages.JOB_TIMER) + " " + theJob.getId();
} else if (theJob instanceof MessageEntity) {
return "Message job " + theJob.getId();
return ExplorerApplication.getCurrent().getMessage(Messages.JOB_MESSAGE) + " " + theJob.getId();
} else {
return "Job " + theJob.getId();
return ExplorerApplication.getCurrent().getMessage(Messages.JOB_DEFAULT_NAME) + " " + theJob.getId();
}
}
......@@ -119,9 +120,9 @@ public class JobDetailPanel extends Panel {
String dueDateString = null;
if(job.getDuedate() != null) {
dueDateString = "Due date " + new PrettyTime().format(job.getDuedate());
dueDateString = ExplorerApplication.getCurrent().getMessage(Messages.JOB_DUEDATE) + " " + new PrettyTime().format(job.getDuedate());
} else {
dueDateString = "No due date";
dueDateString = ExplorerApplication.getCurrent().getMessage(Messages.JOB_NO_DUEDATE);
}
Label timeLabel = new Label(dueDateString);
timeDetails.addComponent(timeLabel);
......@@ -138,7 +139,7 @@ public class JobDetailPanel extends Panel {
}
protected void addJobState() {
Label processDefinitionHeader = new Label("Job Execution");
Label processDefinitionHeader = new Label(ExplorerApplication.getCurrent().getMessage(Messages.JOB_HEADER_EXECUTION));
processDefinitionHeader.addStyleName(ExplorerLayout.STYLE_JOB_DETAILS_HEADER);
processDefinitionHeader.setWidth("95%");
addComponent(processDefinitionHeader);
......@@ -155,7 +156,8 @@ public class JobDetailPanel extends Panel {
// Exceptions
if(job.getExceptionMessage() != null) {
Label exceptionMessageLabel = new Label("Error during last execution: " + job.getExceptionMessage());
Label exceptionMessageLabel = new Label(ExplorerApplication.getCurrent().getMessage(Messages.JOB_ERROR)
+ ": " + job.getExceptionMessage());
exceptionMessageLabel.addStyleName(ExplorerLayout.STYLE_JOB_EXCEPTION_MESSAGE);
layout.addComponent(exceptionMessageLabel);
......@@ -176,17 +178,19 @@ public class JobDetailPanel extends Panel {
layout.addComponent(stackPanel);
layout.setExpandRatio(stackPanel, 1.0f);
} else {
Label noException = new Label("Job hasn't been executed yet");
Label noException = new Label(ExplorerApplication.getCurrent().getMessage(Messages.JOB_NOT_EXECUTED));
noException.addStyleName(Reindeer.LABEL_SMALL);
layout.addComponent(noException);
layout.setExpandRatio(noException, 1.0f);
}
}
protected String getRetriesLabel(Job theJob) {
String retriesString;
if(theJob.getRetries() <= 0) {
retriesString = "No more retries left";
retriesString = ExplorerApplication.getCurrent().getMessage(Messages.JOB_NO_RETRIES);
} else {
retriesString = "Retries: " + theJob.getRetries();
retriesString = ExplorerApplication.getCurrent().getMessage(Messages.JOB_RETRIES) + ": " + theJob.getRetries();
}
return retriesString;
}
......
......@@ -20,6 +20,7 @@ import org.activiti.engine.ProcessEngines;
import org.activiti.engine.identity.Picture;
import org.activiti.engine.identity.User;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import org.activiti.explorer.ui.ExplorerLayout;
import org.activiti.explorer.ui.Images;
......@@ -139,38 +140,38 @@ public class ProfilePage extends Panel {
}
protected void initAboutSection() {
addProfileHeader(infoPanelLayout, "About");
addProfileHeader(infoPanelLayout, ExplorerApplication.getCurrent().getMessage(Messages.PROFILE_ABOUT));
GridLayout aboutLayout = createInfoSectionLayout(2, 4);
addProfileEntry(aboutLayout, "Name: ", user.getFirstName() + " " + user.getLastName());
addProfileEntry(aboutLayout, ExplorerApplication.getCurrent().getMessage(Messages.PROFILE_NAME), user.getFirstName() + " " + user.getLastName());
if (jobTitle != null) {
addProfileEntry(aboutLayout, "Job title: ", jobTitle);
addProfileEntry(aboutLayout, ExplorerApplication.getCurrent().getMessage(Messages.PROFILE_JOBTITLE), jobTitle);
}
if (birthDate != null) {
addProfileEntry(aboutLayout, "Birth date: ", birthDate);
addProfileEntry(aboutLayout, ExplorerApplication.getCurrent().getMessage(Messages.PROFILE_BIRTHDATE), birthDate);
}
if (location != null) {
addProfileEntry(aboutLayout, "Location: ", location);
addProfileEntry(aboutLayout, ExplorerApplication.getCurrent().getMessage(Messages.PROFILE_LOCATION), location);
}
}
protected void initContactSection() {
addProfileHeader(infoPanelLayout, "Contact");
addProfileHeader(infoPanelLayout, ExplorerApplication.getCurrent().getMessage(Messages.PROFILE_CONTACT));
GridLayout contactLayout = createInfoSectionLayout(2, 4);
if (user.getEmail() != null) {
addProfileEntry(contactLayout, "Email: ", user.getEmail());
addProfileEntry(contactLayout, ExplorerApplication.getCurrent().getMessage(Messages.PROFILE_EMAIL), user.getEmail());
}
if (phone != null) {
addProfileEntry(contactLayout, "Phone: ", phone);
addProfileEntry(contactLayout, ExplorerApplication.getCurrent().getMessage(Messages.PROFILE_PHONE), phone);
}
if (twitterName != null) {
addProfileEntry(contactLayout, "twitter", twitterName);
addProfileEntry(contactLayout, ExplorerApplication.getCurrent().getMessage(Messages.PROFILE_TWITTER), twitterName);
}
if (skypeId != null) {
......@@ -190,25 +191,25 @@ public class ProfilePage extends Panel {
skypeImage.setSizeUndefined();
skypeLayout.addComponent(skypeImage);
addProfileEntry(contactLayout, "Skype: ", skypeLayout);
addProfileEntry(contactLayout, ExplorerApplication.getCurrent().getMessage(Messages.PROFILE_SKYPE), skypeLayout);
}
}
protected void initAccountsSection() {
addProfileHeader(infoPanelLayout, "Accounts");
addProfileHeader(infoPanelLayout, ExplorerApplication.getCurrent().getMessage(Messages.PROFILE_ACCOUNTS));
GridLayout accountLayout = createInfoSectionLayout(3, 2);
// Google
Embedded googleImage = new Embedded(null, Images.GOOGLE);
googleImage.setSizeUndefined();
accountLayout.addComponent(googleImage);
addProfileEntry(accountLayout, "Google: ", "mr_kermit_frog@gmail.com");
addProfileEntry(accountLayout, "Google", "mr_kermit_frog@gmail.com");
// Alfresco
Embedded alfrescoImage = new Embedded(null, Images.ALFRESCO);
alfrescoImage.setSizeUndefined();
accountLayout.addComponent(alfrescoImage);
addProfileEntry(accountLayout, "Alfresco: ", "kermit_alfresco");
addProfileEntry(accountLayout, "Alfresco", "kermit_alfresco");
}
protected void addProfileHeader(VerticalLayout infoLayout, String headerName) {
......@@ -227,7 +228,7 @@ public class ProfilePage extends Panel {
}
protected void addProfileEntry(GridLayout layout, String name, String value) {
addProfileEntry(layout, name, new Label(value));
addProfileEntry(layout, name + ": ", new Label(value));
}
protected void addProfileEntry(GridLayout layout, String name, Component value) {
......
......@@ -22,6 +22,7 @@ import org.activiti.engine.TaskService;
import org.activiti.engine.identity.User;
import org.activiti.engine.task.Comment;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import org.activiti.explorer.ui.ExplorerLayout;
import com.ocpsoft.pretty.time.PrettyTime;
......@@ -160,7 +161,7 @@ public class TaskCommentPanel extends Panel {
textArea.addStyleName(ExplorerLayout.STYLE_TASK_COMMENT_TIME);
grid.addComponent(textArea);
Button addCommentButtom = new Button("Add comment");
Button addCommentButtom = new Button(ExplorerApplication.getCurrent().getMessage(Messages.TASK_ADD_COMMENT));
addCommentButtom.addStyleName(Reindeer.BUTTON_SMALL);
grid.addComponent(addCommentButtom);
grid.setComponentAlignment(addCommentButtom, Alignment.BOTTOM_RIGHT);
......
......@@ -13,6 +13,7 @@
package org.activiti.explorer.ui.task;
import java.io.InputStream;
import java.text.MessageFormat;
import org.activiti.engine.IdentityService;
import org.activiti.engine.ProcessEngines;
......@@ -20,6 +21,7 @@ import org.activiti.engine.identity.Picture;
import org.activiti.engine.identity.User;
import org.activiti.engine.task.Comment;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import org.activiti.explorer.ui.ExplorerLayout;
import com.ocpsoft.pretty.time.PrettyTime;
......@@ -92,8 +94,10 @@ public class TaskCommentPopupWindow extends Window {
layout.addComponent(commentLayout);
layout.setExpandRatio(commentLayout, 1.0f);
Label header = new Label(new PrettyTime().format(comment.getTime())
+ " " + user.getFirstName() + " " + user.getLastName() + " said");
Label header = new Label(MessageFormat.format(
ExplorerApplication.getCurrent().getMessage(Messages.TASK_COMMENT_POPUP_HEADER),
new PrettyTime().format(comment.getTime()),
user.getFirstName() + " " + user.getLastName()));
header.addStyleName(ExplorerLayout.STYLE_TASK_COMMENT_AUTHOR);
commentLayout.addComponent(header);
......
......@@ -12,6 +12,7 @@
*/
package org.activiti.explorer.ui.task;
import java.text.MessageFormat;
import java.util.Map;
import org.activiti.engine.FormService;
......@@ -20,6 +21,7 @@ import org.activiti.engine.TaskService;
import org.activiti.engine.form.TaskFormData;
import org.activiti.engine.task.Task;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import org.activiti.explorer.ui.ExplorerLayout;
import org.activiti.explorer.ui.Images;
import org.activiti.explorer.ui.form.FormPropertiesEventListener;
......@@ -131,7 +133,7 @@ public class TaskDetailPanel extends HorizontalLayout {
// create time
if (task.getCreateTime() != null) {
Label createTime = new Label("Created " + new PrettyTime().format(task.getCreateTime()));
Label createTime = new Label(ExplorerApplication.getCurrent().getMessage(Messages.TASK_CREATED) + " " + new PrettyTime().format(task.getCreateTime()));
createTime.addStyleName(ExplorerLayout.STYLE_LABEL_BOLD);
createTime.setSizeUndefined();
grid.addComponent(createTime);
......@@ -144,7 +146,7 @@ public class TaskDetailPanel extends HorizontalLayout {
// due date
if (task.getDueDate() != null) {
Label dueDate = new Label("Has to be finished " + new PrettyTime().format(task.getDueDate()));
Label dueDate = new Label(ExplorerApplication.getCurrent().getMessage(Messages.TASK_DUEDATE) + " " + new PrettyTime().format(task.getDueDate()));
dueDate.addStyleName(ExplorerLayout.STYLE_LABEL_BOLD);
dueDate.setSizeUndefined();
grid.addComponent(dueDate);
......@@ -212,8 +214,8 @@ public class TaskDetailPanel extends HorizontalLayout {
TaskFormData formData = formService.getTaskFormData(task.getId());
if(formData != null && formData.getFormProperties() != null && formData.getFormProperties().size() > 0) {
taskForm = new FormPropertiesForm();
taskForm.setSubmitButtonCaption("Complete task");
taskForm.setCancelButtonCaption("Reset form");
taskForm.setSubmitButtonCaption(ExplorerApplication.getCurrent().getMessage(Messages.TASK_COMPLETE));
taskForm.setCancelButtonCaption(ExplorerApplication.getCurrent().getMessage(Messages.TASK_RESET_FORM));
taskForm.setFormProperties(formData.getFormProperties());
taskForm.addListener(new FormPropertiesEventListener() {
......@@ -226,9 +228,9 @@ public class TaskDetailPanel extends HorizontalLayout {
formService.submitTaskFormData(task.getId(), properties);
ExplorerApplication.getCurrent().getMainWindow().showNotification("Task '" +
task.getName() + "' completed");
ExplorerApplication.getCurrent().getMainWindow().showNotification(
MessageFormat.format(ExplorerApplication.getCurrent().getMessage(Messages.TASK_COMPLETED),
task.getName()));
parent.refreshList();
}
......@@ -244,7 +246,7 @@ public class TaskDetailPanel extends HorizontalLayout {
} else {
// Just add a button to complete the task
// TODO: perhaps move to a better place
Button completeButton = new Button("Complete");
Button completeButton = new Button(ExplorerApplication.getCurrent().getMessage(Messages.TASK_COMPLETE));
completeButton.addListener(new ClickListener() {
......@@ -252,8 +254,9 @@ public class TaskDetailPanel extends HorizontalLayout {
public void buttonClick(ClickEvent event) {
taskService.complete(task.getId());
ExplorerApplication.getCurrent().getMainWindow().showNotification("Task '" +
task.getName() + "' completed");
ExplorerApplication.getCurrent().getMainWindow().showNotification(
MessageFormat.format(ExplorerApplication.getCurrent().getMessage(Messages.TASK_COMPLETED),
task.getName()));
parent.refreshList();
}
});
......
......@@ -20,6 +20,7 @@ import org.activiti.engine.ProcessEngines;
import org.activiti.engine.TaskService;
import org.activiti.engine.identity.Group;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.Messages;
import com.vaadin.ui.MenuBar;
......@@ -45,7 +46,7 @@ public class TaskMenuBar extends MenuBar {
// Inbox
String userId = ExplorerApplication.getCurrent().getLoggedInUser().getId();
long inboxCount = taskService.createTaskQuery().taskAssignee(userId).count();
addItem("Inbox ("+inboxCount+")", new Command() {
addItem(ExplorerApplication.getCurrent().getMessage(Messages.TASK_MENU_INBOX)+ "("+inboxCount+")", new Command() {
public void menuSelected(MenuItem selectedItem) {
ExplorerApplication.getCurrent().switchView(new TaskInboxPage());
}
......@@ -53,7 +54,7 @@ public class TaskMenuBar extends MenuBar {
// Queued
List<Group> groups = identityService.createGroupQuery().groupMember(userId).orderByGroupName().asc().list();
MenuItem queuedItem = addItem("Queued", null);
MenuItem queuedItem = addItem(ExplorerApplication.getCurrent().getMessage(Messages.TASK_MENU_QUEUED), null);
long queuedCount = 0;
for (final Group group : groups) {
long groupCount = taskService.createTaskQuery().taskCandidateGroup(group.getId()).count();
......
app.title = Explorer V2
# Login
login.failed.header = Could not log you in
login.failed.invalid = Invalid user id and/or password
login.username = User ID
login.password = Password
login.button = Log in
# Header
header.searchbox = Search tasks
header.logout = Logout
# Main menu
main.menu.tasks = Tasks
main.menu.flows = Flows
main.menu.management = Management
# Profile
profile.about = About
profile.name = Name
profile.jobtitle = Job title
profile.birthdate = Birth date
profile.location = Location
profile.contact = Contact
profile.email = Email
profile.phone = Phone
profile.twitter = Twitter
profile.skype = Skype
profile.accounts = Accounts
# Task menu
task.menu.inbox = Inbox
task.menu.queued = Queued
# Task details
task.created = Created
task.duedate = Has to be finished
task.complete = Complete task
task.task.completed = Task {0} completed
task.form.reset = Reset form
task.comment.add = Add comment
task.comment.popup.header = {0}, {1} said:
# Flow Menu
flow.menu.my = My Flow
flow.menu.launch = Launch Flow
# Flow page
flow.category = Category:
flow.version = Version
flow.deploy.time = Deployed
flow.header.diagram = Flow Diagram
flow.no.diagram = No image available for this flow.
flow.start = Start flow
flow.started.notification = Process {0} has been started
# Management menu
management.menu.database = Database
management.menu.deployments = Deployments
management.menu.deployments.show.all = Show all
management.menu.deployments.upload = Upload new
management.menu.jobs = Jobs
# Job page
job.execute = Execute
job.header.execution = Job execution
job.retries = Retries
job.no.retries = No more retries left
job.default.name = Job
job.timer = Timer job
job.message = Message job
job.duedate = Due
job.no.dudedate = No duedate
job.error = Error during last execution
job.not.executed = Job hasn't been executed yet.
# Deployment page
deployment.delete = Delete
deployment.create.time = Deployed
deployment.header.definitions = Process Definitions
deployment.header.resources = Resources
deployment.upload = Upload new deployment
deployment.upload.description = Select a file (.bar, .zip or .bpmn20.xml) or drop a file in the rectangle below.
# Database page
database.no.rows = Table contains no rows.
# Upload
upload.select = Choose a file
upload.drop = Drop a file here
......@@ -9,7 +9,7 @@
color: white; /* color of text */
font-family: Helvetica, Arial, sans-serif;
background: #1b7ec3; /* non-white part of page */
font-size: 16px;
font-size: 14px;
font-weight: bold;
}
......@@ -29,8 +29,8 @@
}
#login-central-components {
margin: 0 0 0 -185px;
width: 370px;
margin: 0 0 0 -180px;
width: 360px;
text-align: center;
position: absolute;
left: 50%;
......@@ -45,14 +45,14 @@
/* Text fields of input form */
input.login-field {
font-size: 16px;
height:40px;
height:30px;
width: 250px;
margin-left: 10px;
padding-left: 7px; /* To start the typing of the text a bit to the right */
float: right;
background: white;
border: solid 1px transparent;
margin-bottom: 2px;
margin-bottom: 5px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
}
......@@ -331,6 +331,7 @@ input.login-field {
/* Shared styles */
.deployment-details-header, .job-details-header, .proc-def-details-header {
width: 95%;
height: 1.1em;
padding-top: 0.3em;
padding-right: 0.3em;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册