mirror of
https://gitee.com/jmix/cuba.git
synced 2024-12-02 19:27:57 +08:00
New test Id mechanism for web #PL-2809
This commit is contained in:
parent
b4d6ddfb89
commit
c83a2af126
@ -60,7 +60,7 @@ def webToolkitLegacyModule = project(':cuba-web6-toolkit')
|
||||
def webModuleThemes = project(':cuba-web-themes')
|
||||
def webLegacyModuleThemes = project(':cuba-web6-themes')
|
||||
|
||||
def vaadinVersion = '7.1.8.cuba.8'
|
||||
def vaadinVersion = '7.1.8.cuba.9'
|
||||
def vaadinLegacyVersion = '6.6.1.140'
|
||||
def springVersion = '3.1.3.RELEASE'
|
||||
|
||||
|
60
modules/gui/src/com/haulmont/cuba/gui/TestIdManager.java
Normal file
60
modules/gui/src/com/haulmont/cuba/gui/TestIdManager.java
Normal file
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright (c) 2008-2013 Haulmont. All rights reserved.
|
||||
* Use is subject to license terms, see http://www.cuba-platform.com/license for details.
|
||||
*/
|
||||
|
||||
package com.haulmont.cuba.gui;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author artamonov
|
||||
* @version $Id$
|
||||
*/
|
||||
public class TestIdManager {
|
||||
|
||||
protected Map<String, Integer> ids = new HashMap<>();
|
||||
|
||||
public String getTestId(String baseId) {
|
||||
String id = normalize(baseId);
|
||||
|
||||
Integer number = ids.get(id);
|
||||
if (number == null) {
|
||||
number = 0;
|
||||
} else {
|
||||
number++;
|
||||
}
|
||||
ids.put(id, number);
|
||||
|
||||
// prevent conflicts
|
||||
while (ids.containsKey(id + number)) {
|
||||
number++;
|
||||
}
|
||||
|
||||
if (number > 0) {
|
||||
id = id + number;
|
||||
}
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
public String reserveId(String id) {
|
||||
if (!ids.containsKey(id)) {
|
||||
ids.put(id, 0);
|
||||
}
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
public String normalize(String id) {
|
||||
if (id != null) {
|
||||
return id.replaceAll("[^\\p{L}\\p{Nd}]", "_");
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
ids.clear();
|
||||
}
|
||||
}
|
@ -321,7 +321,6 @@ public abstract class WindowManager {
|
||||
if (template != null) {
|
||||
//noinspection unchecked
|
||||
window = createWindow(windowInfo, params, LayoutLoaderConfig.getWindowLoaders());
|
||||
window.setId(windowInfo.getId());
|
||||
String caption = loadCaption(window, params);
|
||||
String description = loadDescription(window, params);
|
||||
if (openType == OpenType.NEW_TAB) {
|
||||
@ -489,7 +488,7 @@ public abstract class WindowManager {
|
||||
throw new IllegalStateException("Invalid WindowInfo: " + windowInfo);
|
||||
}
|
||||
}
|
||||
window.setId(windowInfo.getId());
|
||||
|
||||
((Window.Lookup) window).setLookupHandler(handler);
|
||||
|
||||
final String caption = loadCaption(window, params);
|
||||
|
@ -52,7 +52,16 @@ public class CubaMenuBarConnector extends MenuBarConnector {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUseMoreMenuItem() {
|
||||
protected boolean isUseMoreMenuItem() {
|
||||
return !getState().vertical;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getItemId(UIDL uidl) {
|
||||
if (uidl.hasAttribute("testId")) {
|
||||
return uidl.getStringAttribute("testId");
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@ -31,7 +31,6 @@ public class CubaMenuBarWidget extends VMenuBar implements BlurHandler {
|
||||
if (item.hasAttribute("separator")) {
|
||||
itemHTML.append("<span>---</span><span>---</span>");
|
||||
} else {
|
||||
|
||||
itemHTML.append("<span class=\"")
|
||||
.append(getStylePrimaryName())
|
||||
.append("-menuitem-caption\">");
|
||||
|
@ -8,6 +8,7 @@ package com.haulmont.cuba.web.toolkit.ui.client.tabsheet;
|
||||
import com.google.gwt.event.dom.client.BlurEvent;
|
||||
import com.google.gwt.event.dom.client.ContextMenuEvent;
|
||||
import com.google.gwt.event.dom.client.FocusEvent;
|
||||
import com.vaadin.client.UIDL;
|
||||
import com.vaadin.client.ui.VTabsheet;
|
||||
|
||||
/**
|
||||
@ -41,4 +42,13 @@ public class CubaTabSheetWidget extends VTabsheet {
|
||||
|
||||
removeStyleDependentName("focus");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateAdditionalProperties(UIDL tabUidl, Tab tab) {
|
||||
super.updateAdditionalProperties(tabUidl, tab);
|
||||
|
||||
if (tabUidl.hasAttribute("testId")) {
|
||||
tab.getElement().setId(tabUidl.getStringAttribute("testId"));
|
||||
}
|
||||
}
|
||||
}
|
@ -68,8 +68,6 @@ public abstract class App {
|
||||
|
||||
protected boolean themeInitialized = false;
|
||||
|
||||
protected boolean testModeRequest = false;
|
||||
|
||||
protected String webResourceTimestamp = "null";
|
||||
|
||||
protected String clientAddress;
|
||||
@ -305,10 +303,6 @@ public abstract class App {
|
||||
themeInitialized = false;
|
||||
}
|
||||
|
||||
public boolean isTestModeRequest() {
|
||||
return testModeRequest;
|
||||
}
|
||||
|
||||
public String getWebResourceTimestamp() {
|
||||
return webResourceTimestamp;
|
||||
}
|
||||
|
@ -7,8 +7,10 @@ package com.haulmont.cuba.web;
|
||||
|
||||
import com.haulmont.cuba.core.global.AppBeans;
|
||||
import com.haulmont.cuba.core.global.Configuration;
|
||||
import com.haulmont.cuba.core.global.GlobalConfig;
|
||||
import com.haulmont.cuba.core.global.MessageTools;
|
||||
import com.haulmont.cuba.web.sys.LinkHandler;
|
||||
import com.haulmont.cuba.gui.TestIdManager;
|
||||
import com.haulmont.cuba.web.toolkit.ui.CubaJQueryIntegration;
|
||||
import com.haulmont.cuba.web.toolkit.ui.CubaSWFObjectIntegration;
|
||||
import com.vaadin.annotations.PreserveOnRefresh;
|
||||
@ -41,6 +43,10 @@ public class AppUI extends UI implements ErrorHandler {
|
||||
|
||||
protected boolean applicationInitRequired = false;
|
||||
|
||||
protected TestIdManager testIdManager = new TestIdManager();
|
||||
|
||||
protected boolean testMode = false;
|
||||
|
||||
public AppUI() {
|
||||
log.trace("Creating UI " + this);
|
||||
if (!App.isBound()) {
|
||||
@ -66,11 +72,12 @@ public class AppUI extends UI implements ErrorHandler {
|
||||
});
|
||||
|
||||
applicationInitRequired = true;
|
||||
|
||||
} else {
|
||||
app = App.getInstance();
|
||||
}
|
||||
|
||||
testMode = AppBeans.get(Configuration.class).getConfig(GlobalConfig.class).getTestMode();
|
||||
|
||||
// do not grab focus
|
||||
setTabIndex(-1);
|
||||
|
||||
@ -156,6 +163,14 @@ public class AppUI extends UI implements ErrorHandler {
|
||||
}
|
||||
}
|
||||
|
||||
public TestIdManager getTestIdManager() {
|
||||
return testIdManager;
|
||||
}
|
||||
|
||||
public boolean isTestMode() {
|
||||
return testMode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void error(com.vaadin.server.ErrorEvent event) {
|
||||
try {
|
||||
|
@ -216,7 +216,7 @@ public class AppWindow extends UIView implements UserSubstitutionListener, CubaH
|
||||
clientManager.extend(rootLayout);
|
||||
|
||||
workerTimer = new CubaTimer();
|
||||
workerTimer.setId("backgroundWorkerTimer");
|
||||
workerTimer.setId(ui.getTestIdManager().reserveId("backgroundWorkerTimer"));
|
||||
rootLayout.addComponent(workerTimer);
|
||||
|
||||
workerTimer.setRepeating(true);
|
||||
@ -499,6 +499,7 @@ public class AppWindow extends UIView implements UserSubstitutionListener, CubaH
|
||||
if (AppWindow.Mode.TABBED.equals(getMode())) {
|
||||
if (tabSheet == null) {
|
||||
tabSheet = new AppWindow.AppTabSheet();
|
||||
tabSheet.setId(ui.getTestIdManager().reserveId("appTabSheet"));
|
||||
tabSheet.setSizeFull();
|
||||
mainLayout.addComponent(tabSheet);
|
||||
mainLayout.setExpandRatio(tabSheet, 1);
|
||||
@ -622,9 +623,8 @@ public class AppWindow extends UIView implements UserSubstitutionListener, CubaH
|
||||
menuBar.setWidth("100%");
|
||||
menuBar.setMoreMenuItem(null); // force usage more item menu
|
||||
|
||||
if (globalConfig.getTestMode()) {
|
||||
// vaadin7 test mode
|
||||
// AppUI.getInstance().getWindowManager().setDebugId(menuBar, "appMenu");
|
||||
if (ui.isTestMode()) {
|
||||
menuBar.setId(ui.getTestIdManager().reserveId("appMenu"));
|
||||
}
|
||||
|
||||
MenuBuilder menuBuilder = new MenuBuilder(this, connection.getSession(), menuBar);
|
||||
@ -780,8 +780,8 @@ public class AppWindow extends UIView implements UserSubstitutionListener, CubaH
|
||||
logoutBtn.addStyleName("nocaption");
|
||||
|
||||
logoutBtn.setIcon(new VersionedThemeResource("app/images/exit.png"));
|
||||
// vaadin7 Debug ids disabled
|
||||
// AppUI.getInstance().getWindowManager().setDebugId(logoutBtn, "logoutBtn");
|
||||
logoutBtn.setId(ui.getTestIdManager().reserveId("logoutBtn"));
|
||||
|
||||
return logoutBtn;
|
||||
}
|
||||
|
||||
|
@ -64,7 +64,12 @@ public class DefaultApp extends App implements ConnectionListener {
|
||||
} else {
|
||||
cleanupBackgroundTasks();
|
||||
closeAllWindows();
|
||||
|
||||
for (AppUI ui : getAppUIs()) {
|
||||
if (ui.isTestMode()) {
|
||||
ui.getTestIdManager().reset();
|
||||
}
|
||||
|
||||
UIView window = createLoginWindow(ui);
|
||||
ui.showView(window);
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ import com.haulmont.cuba.web.auth.ActiveDirectoryConnection;
|
||||
import com.haulmont.cuba.web.auth.ActiveDirectoryHelper;
|
||||
import com.haulmont.cuba.web.auth.DomainAliasesResolver;
|
||||
import com.haulmont.cuba.web.sys.Browser;
|
||||
import com.haulmont.cuba.gui.TestIdManager;
|
||||
import com.haulmont.cuba.web.toolkit.VersionedThemeResource;
|
||||
import com.haulmont.cuba.web.toolkit.ui.CubaCheckBox;
|
||||
import com.vaadin.data.Property;
|
||||
@ -138,16 +139,18 @@ public class LoginWindow extends UIView implements Action.Handler {
|
||||
setBaseStyle("cuba-login");
|
||||
|
||||
initUI();
|
||||
// vaadin7 commented
|
||||
// if (globalConfig.getTestMode()) {
|
||||
// WebWindowManager windowManager = app.getWindowManager();
|
||||
// windowManager.setDebugId(loginField, "loginField");
|
||||
// windowManager.setDebugId(passwordField, "pwdField");
|
||||
// windowManager.setDebugId(localesSelect, "localesField");
|
||||
// if (okButton != null) {
|
||||
// windowManager.setDebugId(okButton, "loginSubmitButton");
|
||||
// }
|
||||
// }
|
||||
|
||||
if (ui.isTestMode()) {
|
||||
TestIdManager testIdManager = ui.getTestIdManager();
|
||||
|
||||
loginField.setId(testIdManager.reserveId("loginField"));
|
||||
passwordField.setId(testIdManager.reserveId("pwdField"));
|
||||
localesSelect.setId(testIdManager.reserveId("localesField"));
|
||||
|
||||
if (okButton != null) {
|
||||
okButton.setId(testIdManager.reserveId("loginSubmitButton"));
|
||||
}
|
||||
}
|
||||
|
||||
addActionHandler(this);
|
||||
}
|
||||
|
@ -51,6 +51,7 @@ public class WebWindowManager extends WindowManager {
|
||||
private static Log log = LogFactory.getLog(WebWindowManager.class);
|
||||
|
||||
protected App app;
|
||||
protected AppUI ui;
|
||||
protected AppWindow appWindow;
|
||||
|
||||
protected final WebConfig webConfig;
|
||||
@ -62,12 +63,11 @@ public class WebWindowManager extends WindowManager {
|
||||
protected final Map<Window, Integer> windows = new HashMap<>();
|
||||
protected final Map<ComponentContainer, WindowBreadCrumbs> fakeTabs = new HashMap<>();
|
||||
|
||||
protected Map<String, Integer> debugIds = new HashMap<>();
|
||||
|
||||
protected boolean disableSavingScreenHistory;
|
||||
protected ScreenHistorySupport screenHistorySupport;
|
||||
|
||||
public WebWindowManager(final App app, AppWindow appWindow) {
|
||||
this.ui = app.getAppUI();
|
||||
this.app = app;
|
||||
this.appWindow = appWindow;
|
||||
|
||||
@ -343,6 +343,12 @@ public class WebWindowManager extends WindowManager {
|
||||
newTab = tabSheet.getTab(layout);
|
||||
} else {
|
||||
newTab = tabSheet.addTab(layout);
|
||||
|
||||
if (ui.isTestMode() && tabSheet instanceof CubaTabSheet) {
|
||||
CubaTabSheet mainTabsheet = (CubaTabSheet) tabSheet;
|
||||
mainTabsheet.setTestId(newTab, ui.getTestIdManager().getTestId("tab_" + window.getId()));
|
||||
}
|
||||
|
||||
tabs.put(layout, (WindowBreadCrumbs) components[0]);
|
||||
}
|
||||
newTab.setCaption(formatTabCaption(caption, description));
|
||||
@ -485,10 +491,8 @@ public class WebWindowManager extends WindowManager {
|
||||
|
||||
protected Component showWindowDialog(final Window window, final String caption, final String description,
|
||||
boolean forciblyDialog) {
|
||||
|
||||
final com.vaadin.ui.Window win = createDialogWindow(window);
|
||||
win.setId(window.getId());
|
||||
setDebugId(win, window.getId());
|
||||
setDebugId(win, "dialog_" + window.getId());
|
||||
|
||||
Layout layout = (Layout) WebComponentsHelper.getComposition(window);
|
||||
|
||||
@ -554,7 +558,7 @@ public class WebWindowManager extends WindowManager {
|
||||
}
|
||||
win.setModal(true);
|
||||
|
||||
appWindow.getAppUI().addWindow(win);
|
||||
ui.addWindow(win);
|
||||
win.center();
|
||||
|
||||
return win;
|
||||
@ -568,7 +572,7 @@ public class WebWindowManager extends WindowManager {
|
||||
|
||||
protected com.vaadin.ui.Window createDialogWindow(Window window) {
|
||||
com.vaadin.ui.Window vWindow = new com.vaadin.ui.Window(window.getCaption());
|
||||
vWindow.setErrorHandler(app.getAppUI());
|
||||
vWindow.setErrorHandler(ui);
|
||||
return vWindow;
|
||||
}
|
||||
|
||||
@ -676,7 +680,7 @@ public class WebWindowManager extends WindowManager {
|
||||
case DIALOG: {
|
||||
final com.vaadin.ui.Window win = (com.vaadin.ui.Window) openMode.getData();
|
||||
removeCloseListeners(win);
|
||||
appWindow.getAppUI().removeWindow(win);
|
||||
ui.removeWindow(win);
|
||||
fireListeners(window, tabs.size() != 0);
|
||||
break;
|
||||
}
|
||||
@ -804,7 +808,8 @@ public class WebWindowManager extends WindowManager {
|
||||
public void showMessageDialog(String title, String message, IFrame.MessageType messageType) {
|
||||
final com.vaadin.ui.Window window = new com.vaadin.ui.Window(title);
|
||||
window.setId("cuba-message-dialog");
|
||||
setDebugId(window, "cuba-message-dialog");
|
||||
|
||||
setDebugId(window, "cubaMessageDialog");
|
||||
|
||||
window.addAction(new ShortcutListener("Esc", ShortcutAction.KeyCode.ESCAPE, null) {
|
||||
@Override
|
||||
@ -823,7 +828,7 @@ public class WebWindowManager extends WindowManager {
|
||||
window.addCloseListener(new com.vaadin.ui.Window.CloseListener() {
|
||||
@Override
|
||||
public void windowClose(com.vaadin.ui.Window.CloseEvent e) {
|
||||
appWindow.getAppUI().removeWindow(window);
|
||||
ui.removeWindow(window);
|
||||
}
|
||||
});
|
||||
|
||||
@ -849,7 +854,7 @@ public class WebWindowManager extends WindowManager {
|
||||
window.setResizable(false);
|
||||
window.setModal(true);
|
||||
|
||||
appWindow.getAppUI().addWindow(window);
|
||||
ui.addWindow(window);
|
||||
window.center();
|
||||
window.focus();
|
||||
}
|
||||
@ -864,7 +869,7 @@ public class WebWindowManager extends WindowManager {
|
||||
window.addCloseListener(new com.vaadin.ui.Window.CloseListener() {
|
||||
@Override
|
||||
public void windowClose(com.vaadin.ui.Window.CloseEvent e) {
|
||||
app.getAppUI().removeWindow(window);
|
||||
ui.removeWindow(window);
|
||||
}
|
||||
});
|
||||
|
||||
@ -902,7 +907,7 @@ public class WebWindowManager extends WindowManager {
|
||||
@Override
|
||||
public void buttonClick(Button.ClickEvent event) {
|
||||
action.actionPerform(null);
|
||||
app.getAppUI().removeWindow(window);
|
||||
ui.removeWindow(window);
|
||||
}
|
||||
});
|
||||
|
||||
@ -940,7 +945,7 @@ public class WebWindowManager extends WindowManager {
|
||||
layout.setExpandRatio(messageLab, 1);
|
||||
layout.setComponentAlignment(actionsBar, com.vaadin.ui.Alignment.BOTTOM_RIGHT);
|
||||
|
||||
appWindow.getAppUI().addWindow(window);
|
||||
ui.addWindow(window);
|
||||
window.center();
|
||||
}
|
||||
|
||||
@ -961,29 +966,30 @@ public class WebWindowManager extends WindowManager {
|
||||
if (target == null)
|
||||
target = "_blank";
|
||||
if (width != null && height != null && border != null) {
|
||||
appWindow.getAppUI().getPage().open(url, target, width, height, BorderStyle.valueOf(border));
|
||||
ui.getPage().open(url, target, width, height, BorderStyle.valueOf(border));
|
||||
} else if (tryToOpenAsPopup != null) {
|
||||
appWindow.getAppUI().getPage().open(url, target, tryToOpenAsPopup);
|
||||
ui.getPage().open(url, target, tryToOpenAsPopup);
|
||||
} else {
|
||||
appWindow.getAppUI().getPage().open(url, target, false);
|
||||
ui.getPage().open(url, target, false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDebugIds(final Window window) {
|
||||
if (app.isTestModeRequest()) {
|
||||
if (ui.isTestMode()) {
|
||||
com.haulmont.cuba.gui.ComponentsHelper.walkComponents(window, new ComponentVisitor() {
|
||||
@Override
|
||||
public void visit(com.haulmont.cuba.gui.components.Component component, String name) {
|
||||
final String id = window.getId() + "." + name;
|
||||
if (webConfig.getAllowIdSuffix()) {
|
||||
component.setDebugId(generateDebugId(id));
|
||||
} else {
|
||||
if (component.getDebugId() == null) {
|
||||
final String id;
|
||||
String fullFrameId = ComponentsHelper.getFullFrameId(window);
|
||||
|
||||
if (component.getId() != null) {
|
||||
component.setDebugId(id);
|
||||
id = fullFrameId + "_" + component.getId();
|
||||
} else {
|
||||
component.setDebugId(generateDebugId(id));
|
||||
id = fullFrameId + "_" + name;
|
||||
}
|
||||
component.setDebugId(ui.getTestIdManager().getTestId(id));
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -1037,21 +1043,8 @@ public class WebWindowManager extends WindowManager {
|
||||
}
|
||||
|
||||
public void setDebugId(Component component, String id) {
|
||||
if (app.isTestModeRequest()) {
|
||||
if (webConfig.getAllowIdSuffix()) {
|
||||
component.setId(generateDebugId(id));
|
||||
} else {
|
||||
component.setId(id);
|
||||
}
|
||||
if (ui.isTestMode()) {
|
||||
component.setId(ui.getTestIdManager().getTestId(id));
|
||||
}
|
||||
}
|
||||
|
||||
protected String generateDebugId(String id) {
|
||||
Integer count = debugIds.get(id);
|
||||
if (count == null) {
|
||||
count = 0;
|
||||
}
|
||||
debugIds.put(id, ++count);
|
||||
return id + "." + count;
|
||||
}
|
||||
}
|
@ -9,6 +9,7 @@ import com.haulmont.cuba.core.global.*;
|
||||
import com.haulmont.cuba.gui.GuiDevelopmentException;
|
||||
import com.haulmont.cuba.gui.config.WindowConfig;
|
||||
import com.haulmont.cuba.security.entity.User;
|
||||
import com.haulmont.cuba.web.AppUI;
|
||||
import com.haulmont.cuba.web.WebConfig;
|
||||
import com.vaadin.shared.ui.MarginInfo;
|
||||
import com.vaadin.shared.ui.label.ContentMode;
|
||||
@ -56,7 +57,10 @@ public class ExceptionDialog extends Window {
|
||||
}
|
||||
|
||||
public ExceptionDialog(Throwable throwable, @Nullable String caption, @Nullable String message) {
|
||||
super();
|
||||
if (AppUI.getCurrent().isTestMode()) {
|
||||
setId(AppUI.getCurrent().getTestIdManager().getTestId("exceptionDialog"));
|
||||
}
|
||||
|
||||
setCaption(caption != null ? caption : messages.getMessage(getClass(), "exceptionDialog.caption"));
|
||||
setWidth(600, Unit.PIXELS);
|
||||
center();
|
||||
|
@ -10,7 +10,6 @@ import com.haulmont.cuba.client.ClientConfig;
|
||||
import com.haulmont.cuba.core.entity.Entity;
|
||||
import com.haulmont.cuba.core.global.AppBeans;
|
||||
import com.haulmont.cuba.core.global.Configuration;
|
||||
import com.haulmont.cuba.core.global.GlobalConfig;
|
||||
import com.haulmont.cuba.core.global.Messages;
|
||||
import com.haulmont.cuba.gui.*;
|
||||
import com.haulmont.cuba.gui.components.*;
|
||||
@ -620,6 +619,10 @@ public class WebWindow implements Window, Component.Wrapper,
|
||||
@Override
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
|
||||
if (AppUI.getCurrent().isTestMode() && StringUtils.isEmpty(debugId)) {
|
||||
setDebugId(id);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -630,6 +633,10 @@ public class WebWindow implements Window, Component.Wrapper,
|
||||
@Override
|
||||
public void setDebugId(String debugId) {
|
||||
this.debugId = debugId;
|
||||
|
||||
if (debugId != null) {
|
||||
component.setId(AppUI.getCurrent().getTestIdManager().getTestId("window_" + debugId));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1179,12 +1186,10 @@ public class WebWindow implements Window, Component.Wrapper,
|
||||
public void setId(String id) {
|
||||
super.setId(id);
|
||||
|
||||
Configuration configuration = AppBeans.get(Configuration.NAME);
|
||||
|
||||
if (configuration.getConfig(GlobalConfig.class).getTestMode()) {
|
||||
WebWindowManager windowManager = getWindowManager();
|
||||
windowManager.setDebugId(selectButton, id + ".selectButton");
|
||||
windowManager.setDebugId(cancelButton, id + ".cancelButton");
|
||||
if (debugId != null) {
|
||||
TestIdManager testIdManager = AppUI.getCurrent().getTestIdManager();
|
||||
selectButton.setId(testIdManager.getTestId(debugId + "_selectButton"));
|
||||
cancelButton.setId(testIdManager.getTestId(debugId + "_cancelButton"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,10 +4,13 @@
|
||||
*/
|
||||
package com.haulmont.cuba.web.gui.components;
|
||||
|
||||
import com.haulmont.cuba.gui.ComponentsHelper;
|
||||
import com.haulmont.cuba.gui.components.Component;
|
||||
import com.haulmont.cuba.gui.components.IFrame;
|
||||
import com.haulmont.cuba.web.AppUI;
|
||||
import com.vaadin.server.Sizeable;
|
||||
import com.vaadin.ui.Layout;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.dom4j.Element;
|
||||
|
||||
import java.util.Arrays;
|
||||
@ -45,6 +48,17 @@ public class WebAbstractComponent<T extends com.vaadin.ui.Component>
|
||||
public void setFrame(IFrame frame) {
|
||||
this.frame = frame;
|
||||
frame.registerComponent(this);
|
||||
|
||||
assignAutoDebugId(frame);
|
||||
}
|
||||
|
||||
protected void assignAutoDebugId(IFrame frame) {
|
||||
if (frame.getId() == null)
|
||||
return;
|
||||
|
||||
if (AppUI.getCurrent().isTestMode() && StringUtils.isEmpty(getDebugId()) && StringUtils.isNotEmpty(id)) {
|
||||
setDebugId(AppUI.getCurrent().getTestIdManager().getTestId(ComponentsHelper.getFullFrameId(frame) + "." + id));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -6,8 +6,11 @@ package com.haulmont.cuba.web.gui.components;
|
||||
|
||||
import com.haulmont.cuba.core.global.AppBeans;
|
||||
import com.haulmont.cuba.core.global.Configuration;
|
||||
import com.haulmont.cuba.gui.ComponentsHelper;
|
||||
import com.haulmont.cuba.gui.components.Action;
|
||||
import com.haulmont.cuba.gui.components.Button;
|
||||
import com.haulmont.cuba.gui.components.IFrame;
|
||||
import com.haulmont.cuba.web.AppUI;
|
||||
import com.haulmont.cuba.web.WebConfig;
|
||||
import com.haulmont.cuba.web.toolkit.VersionedThemeResource;
|
||||
import com.vaadin.ui.NativeButton;
|
||||
@ -106,6 +109,18 @@ public class WebButton
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
AppUI ui = AppUI.getCurrent();
|
||||
if (ui.isTestMode() && StringUtils.isEmpty(getDebugId()) && frame != null) {
|
||||
String id = getId();
|
||||
|
||||
if (StringUtils.isEmpty(id))
|
||||
id = action.getId();
|
||||
|
||||
if (StringUtils.isNotEmpty(id)) {
|
||||
setDebugId(ui.getTestIdManager().getTestId(ComponentsHelper.getFullFrameId(frame) + "." + id));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -131,4 +146,23 @@ public class WebButton
|
||||
component.removeStyleName(ICON_STYLE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void assignAutoDebugId(IFrame frame) {
|
||||
if (frame.getId() == null)
|
||||
return;
|
||||
|
||||
AppUI ui = AppUI.getCurrent();
|
||||
|
||||
if (ui.isTestMode() && StringUtils.isEmpty(getDebugId())) {
|
||||
String id = getId();
|
||||
|
||||
if (StringUtils.isEmpty(id) && action != null)
|
||||
id = action.getId();
|
||||
|
||||
if (StringUtils.isNotEmpty(id)) {
|
||||
setDebugId(ui.getTestIdManager().getTestId(ComponentsHelper.getFullFrameId(frame) + "." + id));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -12,6 +12,7 @@ import com.haulmont.cuba.core.entity.Entity;
|
||||
import com.haulmont.cuba.core.global.AppBeans;
|
||||
import com.haulmont.cuba.core.global.MessageTools;
|
||||
import com.haulmont.cuba.core.global.UserSessionSource;
|
||||
import com.haulmont.cuba.gui.TestIdManager;
|
||||
import com.haulmont.cuba.gui.components.DateField;
|
||||
import com.haulmont.cuba.gui.components.Field;
|
||||
import com.haulmont.cuba.gui.components.RequiredValueMissingException;
|
||||
@ -20,6 +21,7 @@ import com.haulmont.cuba.gui.data.Datasource;
|
||||
import com.haulmont.cuba.gui.data.ValueChangingListener;
|
||||
import com.haulmont.cuba.gui.data.ValueListener;
|
||||
import com.haulmont.cuba.gui.data.impl.DsListenerAdapter;
|
||||
import com.haulmont.cuba.web.AppUI;
|
||||
import com.haulmont.cuba.web.toolkit.ui.CubaDateField;
|
||||
import com.haulmont.cuba.web.toolkit.ui.CubaDateFieldWrapper;
|
||||
import com.haulmont.cuba.web.toolkit.ui.CubaMaskedTextField;
|
||||
@ -192,6 +194,17 @@ public class WebDateField extends WebAbstractField<CubaDateFieldWrapper> impleme
|
||||
updateInstance();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDebugId(String id) {
|
||||
super.setDebugId(id);
|
||||
|
||||
if (getDebugId() != null) {
|
||||
TestIdManager testIdManager = AppUI.getCurrent().getTestIdManager();
|
||||
timeField.setDebugId(testIdManager.getTestId(id + "_time"));
|
||||
dateField.setId(testIdManager.getTestId(id + "_date"));
|
||||
}
|
||||
}
|
||||
|
||||
protected void setValueFromDs(Object value) {
|
||||
boolean isEditable = editable;
|
||||
if (!editable) {
|
||||
|
@ -15,6 +15,7 @@ import com.haulmont.cuba.gui.components.Field;
|
||||
import com.haulmont.cuba.gui.data.CollectionDatasource;
|
||||
import com.haulmont.cuba.gui.data.Datasource;
|
||||
import com.haulmont.cuba.gui.data.DsContext;
|
||||
import com.haulmont.cuba.web.AppUI;
|
||||
import com.haulmont.cuba.web.toolkit.ui.CubaCheckBox;
|
||||
import com.haulmont.cuba.web.toolkit.ui.CubaFieldGroup;
|
||||
import com.haulmont.cuba.web.toolkit.ui.CubaFieldGroupLayout;
|
||||
@ -80,11 +81,12 @@ public class WebFieldGroup
|
||||
@Override
|
||||
public void setDebugId(String id) {
|
||||
super.setDebugId(id);
|
||||
|
||||
final List<FieldConfig> fieldConfs = getFields();
|
||||
for (final FieldConfig fieldConf : fieldConfs) {
|
||||
com.vaadin.ui.Field field = component.getField(fieldConf.getId());
|
||||
if (field != null) {
|
||||
field.setId(id + ":" + fieldConf.getId());
|
||||
field.setId(AppUI.getCurrent().getTestIdManager().getTestId(id + "_" + fieldConf.getId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -199,6 +201,10 @@ public class WebFieldGroup
|
||||
((CubaCheckBox) fieldImpl).setCaptionManagedByLayout(true);
|
||||
}
|
||||
|
||||
if (StringUtils.isEmpty(fieldComponent.getId())) {
|
||||
fieldComponent.setId(fieldConf.getId());
|
||||
}
|
||||
|
||||
assignTypicalAttributes(fieldComponent);
|
||||
|
||||
MetaPropertyPath propertyPath = fieldDatasource.getMetaClass().getPropertyPath(id);
|
||||
|
@ -19,6 +19,7 @@ import com.haulmont.cuba.core.entity.BaseUuidEntity;
|
||||
import com.haulmont.cuba.core.entity.Entity;
|
||||
import com.haulmont.cuba.core.global.*;
|
||||
import com.haulmont.cuba.gui.ComponentsHelper;
|
||||
import com.haulmont.cuba.gui.TestIdManager;
|
||||
import com.haulmont.cuba.gui.WindowManager;
|
||||
import com.haulmont.cuba.gui.WindowParams;
|
||||
import com.haulmont.cuba.gui.components.*;
|
||||
@ -40,6 +41,7 @@ import com.haulmont.cuba.security.entity.FilterEntity;
|
||||
import com.haulmont.cuba.security.entity.SearchFolder;
|
||||
import com.haulmont.cuba.security.entity.User;
|
||||
import com.haulmont.cuba.web.App;
|
||||
import com.haulmont.cuba.web.AppUI;
|
||||
import com.haulmont.cuba.web.WebWindowManager;
|
||||
import com.haulmont.cuba.web.app.folders.AppFolderEditWindow;
|
||||
import com.haulmont.cuba.web.app.folders.FolderEditWindow;
|
||||
@ -178,7 +180,6 @@ public class WebFilter extends WebAbstractComponent<CubaVerticalActionsLayout> i
|
||||
select.addValueChangeListener(new SelectListener());
|
||||
select.setTextInputAllowed(false);
|
||||
|
||||
App.getInstance().getWindowManager().setDebugId(select, "genericFilterSelect");
|
||||
topLayout.addComponent(select);
|
||||
|
||||
applyBtn = WebComponentsHelper.createButton("icons/search.png");
|
||||
@ -189,7 +190,6 @@ public class WebFilter extends WebAbstractComponent<CubaVerticalActionsLayout> i
|
||||
apply(false);
|
||||
}
|
||||
});
|
||||
App.getInstance().getWindowManager().setDebugId(applyBtn, "genericFilterApplyBtn");
|
||||
topLayout.addComponent(applyBtn);
|
||||
|
||||
if (globalConfig.getAllowQueryFromSelected()) {
|
||||
@ -1093,6 +1093,36 @@ public class WebFilter extends WebAbstractComponent<CubaVerticalActionsLayout> i
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDebugId(String id) {
|
||||
super.setDebugId(id);
|
||||
|
||||
String debugId = getDebugId();
|
||||
if (debugId != null) {
|
||||
WebWindowManager wm = App.getInstance().getWindowManager();
|
||||
TestIdManager testIdManager = AppUI.getCurrent().getTestIdManager();
|
||||
|
||||
select.setId(testIdManager.getTestId(debugId + "_filterSelect"));
|
||||
|
||||
if (applyBtn != null) {
|
||||
applyBtn.setId(testIdManager.getTestId(debugId + "_applyBtn"));
|
||||
}
|
||||
|
||||
if (maxResultsLayout != null) {
|
||||
maxResultsField.setId(testIdManager.getTestId(debugId + "_maxResultsField"));
|
||||
maxResultsCb.setId(testIdManager.getTestId(debugId + "_maxResultsCheckBox"));
|
||||
}
|
||||
|
||||
if (actionsButton != null) {
|
||||
actionsButton.setDebugId(testIdManager.getTestId(debugId + "_actionsBtn"));
|
||||
}
|
||||
|
||||
if (pinAppliedFilterBtn != null) {
|
||||
wm.setDebugId(pinAppliedFilterBtn, debugId + "_pinAppliedBtn");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CollectionDatasource getDatasource() {
|
||||
return datasource;
|
||||
|
@ -12,11 +12,14 @@ import com.haulmont.cuba.core.global.AppBeans;
|
||||
import com.haulmont.cuba.core.global.MessageTools;
|
||||
import com.haulmont.cuba.core.global.Metadata;
|
||||
import com.haulmont.cuba.core.global.MetadataTools;
|
||||
import com.haulmont.cuba.gui.TestIdManager;
|
||||
import com.haulmont.cuba.gui.components.Action;
|
||||
import com.haulmont.cuba.gui.components.CaptionMode;
|
||||
import com.haulmont.cuba.gui.components.IFrame;
|
||||
import com.haulmont.cuba.gui.components.PickerField;
|
||||
import com.haulmont.cuba.gui.data.Datasource;
|
||||
import com.haulmont.cuba.gui.data.impl.DsListenerAdapter;
|
||||
import com.haulmont.cuba.web.AppUI;
|
||||
import com.haulmont.cuba.web.gui.data.ItemWrapper;
|
||||
import com.haulmont.cuba.web.toolkit.VersionedThemeResource;
|
||||
import com.haulmont.cuba.web.toolkit.ui.CubaPickerField;
|
||||
@ -239,6 +242,29 @@ public class WebPickerField
|
||||
if (action instanceof StandardAction) {
|
||||
((StandardAction) action).setEditable(isEditable());
|
||||
}
|
||||
|
||||
if (StringUtils.isNotEmpty(getDebugId())) {
|
||||
pButton.setDebugId(AppUI.getCurrent().getTestIdManager().getTestId(getDebugId() + "_" + action.getId()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDebugId(String id) {
|
||||
super.setDebugId(id);
|
||||
|
||||
String debugId = getDebugId();
|
||||
if (debugId != null) {
|
||||
TestIdManager testIdManager = AppUI.getCurrent().getTestIdManager();
|
||||
|
||||
for (Action action : actions) {
|
||||
if (action.getOwner() != null && action.getOwner() instanceof WebButton) {
|
||||
WebButton button = (WebButton) action.getOwner();
|
||||
if (StringUtils.isEmpty(button.getDebugId())) {
|
||||
button.setDebugId(testIdManager.getTestId(debugId + "_" + action.getId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -4,9 +4,11 @@
|
||||
*/
|
||||
package com.haulmont.cuba.web.gui.components;
|
||||
|
||||
import com.haulmont.cuba.gui.TestIdManager;
|
||||
import com.haulmont.cuba.gui.components.Action;
|
||||
import com.haulmont.cuba.gui.components.Component;
|
||||
import com.haulmont.cuba.gui.components.KeyCombination;
|
||||
import com.haulmont.cuba.web.AppUI;
|
||||
import com.haulmont.cuba.web.toolkit.VersionedThemeResource;
|
||||
import com.vaadin.ui.VerticalLayout;
|
||||
import com.vaadin.ui.themes.BaseTheme;
|
||||
@ -144,6 +146,28 @@ public class WebPopupButton
|
||||
((com.vaadin.ui.Layout) vPopupComponent).addComponent(vButton);
|
||||
component.markAsDirty();
|
||||
actionOrder.add(action);
|
||||
|
||||
String debugId = getDebugId();
|
||||
if (debugId != null) {
|
||||
button.setDebugId(AppUI.getCurrent().getTestIdManager().getTestId(debugId + "_" + action.getId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDebugId(String id) {
|
||||
super.setDebugId(id);
|
||||
|
||||
String debugId = getDebugId();
|
||||
if (debugId != null) {
|
||||
TestIdManager testIdManager = AppUI.getCurrent().getTestIdManager();
|
||||
|
||||
for (Action action : getActions()) {
|
||||
WebButton button = (WebButton) action.getOwner();
|
||||
if (StringUtils.isEmpty(button.getDebugId())) {
|
||||
button.setDebugId(testIdManager.getTestId(debugId + "_" + action.getId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -179,6 +203,10 @@ public class WebPopupButton
|
||||
this.action = action;
|
||||
}
|
||||
|
||||
private Action getAction() {
|
||||
return action;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerform(Component component) {
|
||||
WebPopupButton.this.component.setPopupVisible(false);
|
||||
|
@ -7,6 +7,7 @@ package com.haulmont.cuba.web.gui.components;
|
||||
import com.haulmont.cuba.gui.AppConfig;
|
||||
import com.haulmont.cuba.gui.ComponentVisitor;
|
||||
import com.haulmont.cuba.gui.ComponentsHelper;
|
||||
import com.haulmont.cuba.gui.TestIdManager;
|
||||
import com.haulmont.cuba.gui.components.Component;
|
||||
import com.haulmont.cuba.gui.components.IFrame;
|
||||
import com.haulmont.cuba.gui.components.TabSheet;
|
||||
@ -14,6 +15,7 @@ import com.haulmont.cuba.gui.components.Window;
|
||||
import com.haulmont.cuba.gui.data.impl.DsContextImplementation;
|
||||
import com.haulmont.cuba.gui.settings.Settings;
|
||||
import com.haulmont.cuba.gui.xml.layout.ComponentLoader;
|
||||
import com.haulmont.cuba.web.AppUI;
|
||||
import com.haulmont.cuba.web.toolkit.ui.CubaTabSheet;
|
||||
import com.vaadin.ui.Layout;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
@ -29,7 +31,7 @@ import java.util.*;
|
||||
*/
|
||||
public class WebTabSheet
|
||||
extends
|
||||
WebAbstractComponent<com.vaadin.ui.TabSheet>
|
||||
WebAbstractComponent<CubaTabSheet>
|
||||
implements
|
||||
TabSheet, Component.Container {
|
||||
|
||||
@ -211,20 +213,43 @@ public class WebTabSheet
|
||||
}
|
||||
|
||||
@Override
|
||||
public TabSheet.Tab addTab(String name, Component component) {
|
||||
final Tab tab = new Tab(name, component);
|
||||
public TabSheet.Tab addTab(String name, Component childComponent) {
|
||||
final Tab tab = new Tab(name, childComponent);
|
||||
|
||||
this.tabs.put(name, tab);
|
||||
|
||||
final com.vaadin.ui.Component tabComponent = WebComponentsHelper.unwrap(component);
|
||||
final com.vaadin.ui.Component tabComponent = WebComponentsHelper.unwrap(childComponent);
|
||||
tabComponent.setSizeFull();
|
||||
|
||||
this.components.put(tabComponent, new ComponentDescriptor(name, component));
|
||||
this.component.addTab(tabComponent);
|
||||
this.components.put(tabComponent, new ComponentDescriptor(name, childComponent));
|
||||
com.vaadin.ui.TabSheet.Tab tabControl = this.component.addTab(tabComponent);
|
||||
|
||||
if (getDebugId() != null) {
|
||||
this.component.setTestId(tabControl,
|
||||
AppUI.getCurrent().getTestIdManager().getTestId(getDebugId() + "." + name));
|
||||
}
|
||||
|
||||
return tab;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDebugId(String id) {
|
||||
super.setDebugId(id);
|
||||
|
||||
String debugId = getDebugId();
|
||||
if (debugId != null) {
|
||||
TestIdManager testIdManager = AppUI.getCurrent().getTestIdManager();
|
||||
|
||||
for (com.vaadin.ui.Component tabComponent : components.keySet()) {
|
||||
com.vaadin.ui.TabSheet.Tab tab = component.getTab(tabComponent);
|
||||
ComponentDescriptor componentDescriptor = components.get(tabComponent);
|
||||
String name = componentDescriptor.name;
|
||||
|
||||
component.setTestId(tab, testIdManager.getTestId(debugId + "." + name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public TabSheet.Tab addLazyTab(String name,
|
||||
Element descriptor,
|
||||
@ -242,7 +267,7 @@ public class WebTabSheet
|
||||
tabComponent.setSizeFull();
|
||||
|
||||
this.components.put(tabComponent, new ComponentDescriptor(name, tabContent));
|
||||
this.component.addTab(tabComponent);
|
||||
com.vaadin.ui.TabSheet.Tab tabControl = this.component.addTab(tabComponent);
|
||||
lazyTabs.add(tabComponent);
|
||||
|
||||
this.component.addSelectedTabChangeListener(new LazyTabChangeListener(tabContent, descriptor, loader));
|
||||
@ -258,6 +283,11 @@ public class WebTabSheet
|
||||
postInitTaskAdded = true;
|
||||
}
|
||||
|
||||
if (getDebugId() != null) {
|
||||
this.component.setTestId(tabControl,
|
||||
AppUI.getCurrent().getTestIdManager().getTestId(getDebugId() + "." + name));
|
||||
}
|
||||
|
||||
return tab;
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@ package com.haulmont.cuba.web.log;
|
||||
import com.haulmont.cuba.core.global.AppBeans;
|
||||
import com.haulmont.cuba.core.global.Messages;
|
||||
import com.haulmont.cuba.web.App;
|
||||
import com.haulmont.cuba.web.AppUI;
|
||||
import com.vaadin.event.Action;
|
||||
import com.vaadin.event.ShortcutAction;
|
||||
import com.vaadin.shared.ui.MarginInfo;
|
||||
@ -28,6 +29,11 @@ public class LogWindow extends Window {
|
||||
|
||||
public LogWindow() {
|
||||
super(AppBeans.get(Messages.class).getMessage(LogWindow.class, "logWindow.caption"));
|
||||
|
||||
if (AppUI.getCurrent().isTestMode()) {
|
||||
setId(AppUI.getCurrent().getTestIdManager().getTestId("logWindow"));
|
||||
}
|
||||
|
||||
setHeight("80%");
|
||||
setWidth("80%");
|
||||
center();
|
||||
|
@ -8,6 +8,7 @@ package com.haulmont.cuba.web.sys;
|
||||
import com.haulmont.cuba.core.global.AppBeans;
|
||||
import com.haulmont.cuba.core.global.DevelopmentException;
|
||||
import com.haulmont.cuba.gui.NoSuchScreenException;
|
||||
import com.haulmont.cuba.gui.TestIdManager;
|
||||
import com.haulmont.cuba.gui.config.*;
|
||||
import com.haulmont.cuba.security.global.UserSession;
|
||||
import com.haulmont.cuba.web.AppWindow;
|
||||
@ -54,7 +55,7 @@ public class MenuBuilder {
|
||||
removeExtraSeparators(menuBar);
|
||||
}
|
||||
|
||||
private void removeExtraSeparators(MenuBar menuBar) {
|
||||
protected void removeExtraSeparators(MenuBar menuBar) {
|
||||
for (MenuBar.MenuItem item : new ArrayList<>(menuBar.getItems())) {
|
||||
removeExtraSeparators(item);
|
||||
if (isMenuItemEmpty(item))
|
||||
@ -62,7 +63,7 @@ public class MenuBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
private void removeExtraSeparators(MenuBar.MenuItem item) {
|
||||
protected void removeExtraSeparators(MenuBar.MenuItem item) {
|
||||
if (!item.hasChildren())
|
||||
return;
|
||||
|
||||
@ -83,33 +84,33 @@ public class MenuBuilder {
|
||||
} while (!done);
|
||||
}
|
||||
|
||||
private void createMenuBarItem(MenuBar menuBar, MenuItem item) {
|
||||
protected void createMenuBarItem(MenuBar menuBar, MenuItem item) {
|
||||
if (item.isPermitted(session)) {
|
||||
MenuBar.MenuItem menuItem = menuBar.addItem(MenuConfig.getMenuItemCaption(item.getId()), createMenuBarCommand(item));
|
||||
assignShortcut(menuItem, item);
|
||||
createSubMenu(menuItem, item, session);
|
||||
assignDebugIds(menuItem, item);
|
||||
assignTestId(menuItem, item);
|
||||
if (isMenuItemEmpty(menuItem)) {
|
||||
menuBar.removeItem(menuItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void createSubMenu(MenuBar.MenuItem vItem, MenuItem item, UserSession session) {
|
||||
protected void createSubMenu(MenuBar.MenuItem vItem, MenuItem item, UserSession session) {
|
||||
if (item.isPermitted(session) && !item.getChildren().isEmpty()) {
|
||||
for (MenuItem child : item.getChildren()) {
|
||||
if (child.getChildren().isEmpty()) {
|
||||
if (child.isPermitted(session)) {
|
||||
MenuBar.MenuItem menuItem = (child.isSeparator()) ? vItem.addSeparator() : vItem.addItem(MenuConfig.getMenuItemCaption(child.getId()), createMenuBarCommand(child));
|
||||
assignShortcut(menuItem, child);
|
||||
assignDebugIds(menuItem, child);
|
||||
assignTestId(menuItem, child);
|
||||
}
|
||||
} else {
|
||||
if (child.isPermitted(session)) {
|
||||
MenuBar.MenuItem menuItem = vItem.addItem(MenuConfig.getMenuItemCaption(child.getId()), null);
|
||||
assignShortcut(menuItem, child);
|
||||
createSubMenu(menuItem, child, session);
|
||||
assignDebugIds(menuItem, child);
|
||||
assignTestId(menuItem, child);
|
||||
if (isMenuItemEmpty(menuItem)) {
|
||||
vItem.removeChild(menuItem);
|
||||
}
|
||||
@ -119,7 +120,7 @@ public class MenuBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
private MenuBar.Command createMenuBarCommand(final MenuItem item) {
|
||||
protected MenuBar.Command createMenuBarCommand(final MenuItem item) {
|
||||
if (!item.getChildren().isEmpty()) //check item is menu
|
||||
return null;
|
||||
|
||||
@ -143,15 +144,19 @@ public class MenuBuilder {
|
||||
public void menuSelected(com.vaadin.ui.MenuBar.MenuItem selectedItem) {
|
||||
if (command != null) {
|
||||
command.execute();
|
||||
} else if (item.getParent() != null) {
|
||||
throw new DevelopmentException("Invalid screen ID for menu item: " + item.getId(),
|
||||
"Parent menu ID", item.getParent().getId());
|
||||
} else {
|
||||
if (item.getParent() != null) {
|
||||
throw new DevelopmentException("Invalid screen ID for menu item: " + item.getId(),
|
||||
"Parent menu ID", item.getParent().getId());
|
||||
} else {
|
||||
throw new DevelopmentException("Invalid screen ID for menu item: " + item.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private boolean isMenuItemEmpty(MenuBar.MenuItem menuItem) {
|
||||
protected boolean isMenuItemEmpty(MenuBar.MenuItem menuItem) {
|
||||
return !menuItem.hasChildren() && menuItem.getCommand() == null;
|
||||
}
|
||||
|
||||
@ -163,10 +168,14 @@ public class MenuBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
protected void assignDebugIds(MenuBar.MenuItem menuItem, MenuItem conf) {
|
||||
protected void assignTestId(MenuBar.MenuItem menuItem, MenuItem conf) {
|
||||
if (menuBar.getId() != null && !conf.isSeparator()) {
|
||||
// vaadin7
|
||||
// menuBar.setId(menuItem, menuBar.getDebugId() + ":" + conf.getId());
|
||||
TestIdManager testIdManager = appWindow.getAppUI().getTestIdManager();
|
||||
|
||||
String id = testIdManager.normalize(conf.getId());
|
||||
testIdManager.reserveId(id);
|
||||
|
||||
menuBar.setTestId(menuItem, menuBar.getId() + "_" + id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -4,8 +4,10 @@
|
||||
*/
|
||||
package com.haulmont.cuba.web.sys;
|
||||
|
||||
import com.haulmont.cuba.gui.TestIdManager;
|
||||
import com.haulmont.cuba.gui.components.Window;
|
||||
import com.haulmont.cuba.web.App;
|
||||
import com.haulmont.cuba.web.AppUI;
|
||||
import com.haulmont.cuba.web.AppWindow;
|
||||
import com.haulmont.cuba.web.toolkit.VersionedThemeResource;
|
||||
import com.vaadin.shared.ui.label.ContentMode;
|
||||
@ -58,6 +60,9 @@ public class WindowBreadCrumbs extends HorizontalLayout {
|
||||
linksLayout.setStyleName("cuba-breadcrumbs");
|
||||
linksLayout.setSizeUndefined();
|
||||
|
||||
TestIdManager testIdManager = AppUI.getCurrent().getTestIdManager();
|
||||
linksLayout.setId(testIdManager.getTestId("breadCrumbs"));
|
||||
|
||||
if (!tabbedMode) {
|
||||
closeBtn = new Button("", new Button.ClickListener() {
|
||||
@Override
|
||||
@ -68,9 +73,7 @@ public class WindowBreadCrumbs extends HorizontalLayout {
|
||||
});
|
||||
closeBtn.setIcon(new VersionedThemeResource("icons/close.png"));
|
||||
closeBtn.setStyleName("cuba-closetab-button");
|
||||
// vaadin7 Test ids
|
||||
// AppUI.getInstance().getWindowManager()
|
||||
// .setDebugId(closeBtn, "closeBtn");
|
||||
closeBtn.setId(testIdManager.reserveId("closeBtn"));
|
||||
}
|
||||
|
||||
HorizontalLayout enclosingLayout = new HorizontalLayout();
|
||||
|
@ -20,6 +20,7 @@ import java.util.Map;
|
||||
public class CubaMenuBar extends com.vaadin.ui.MenuBar {
|
||||
|
||||
protected final Map<MenuItem, String> shortcuts = new HashMap<>();
|
||||
protected final Map<MenuItem, String> testIds = new HashMap<>();
|
||||
|
||||
@Override
|
||||
protected CubaMenuBarState getState() {
|
||||
@ -56,6 +57,10 @@ public class CubaMenuBar extends com.vaadin.ui.MenuBar {
|
||||
shortcuts.remove(item);
|
||||
}
|
||||
|
||||
public void setTestId(MenuItem item, String id) {
|
||||
testIds.put(item, id);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void paintAdditionalItemParams(PaintTarget target, MenuItem item) throws PaintException {
|
||||
if (shortcuts.containsKey(item)) {
|
||||
@ -64,5 +69,8 @@ public class CubaMenuBar extends com.vaadin.ui.MenuBar {
|
||||
target.addAttribute("shortcut", shortcut);
|
||||
}
|
||||
}
|
||||
if (testIds.containsKey(item)) {
|
||||
target.addAttribute("testId", testIds.get(item));
|
||||
}
|
||||
}
|
||||
}
|
@ -10,6 +10,8 @@ import com.haulmont.cuba.web.toolkit.ui.client.tabsheet.CubaTabSheetServerRpc;
|
||||
import com.haulmont.cuba.web.toolkit.ui.client.tabsheet.CubaTabSheetState;
|
||||
import com.vaadin.event.Action;
|
||||
import com.vaadin.server.KeyMapper;
|
||||
import com.vaadin.server.PaintException;
|
||||
import com.vaadin.server.PaintTarget;
|
||||
import com.vaadin.ui.Component;
|
||||
|
||||
import java.util.*;
|
||||
@ -28,6 +30,8 @@ public class CubaTabSheet extends com.vaadin.ui.TabSheet implements Action.Conta
|
||||
|
||||
protected KeyMapper<Action> actionMapper = null;
|
||||
|
||||
protected Map<Tab, String> testIds = new HashMap<>();
|
||||
|
||||
protected CubaTabSheetServerRpc rpc = new CubaTabSheetServerRpc() {
|
||||
@Override
|
||||
public void onTabContextMenu(int tabIndex) {
|
||||
@ -143,6 +147,19 @@ public class CubaTabSheet extends com.vaadin.ui.TabSheet implements Action.Conta
|
||||
}
|
||||
}
|
||||
|
||||
public void setTestId(Tab tab, String testId) {
|
||||
testIds.put(tab, testId);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void paintAdditionalTabAttributes(PaintTarget target, Tab tab) throws PaintException {
|
||||
super.paintAdditionalTabAttributes(target, tab);
|
||||
|
||||
if (testIds.containsKey(tab)) {
|
||||
target.addAttribute("testId", testIds.get(tab));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addActionHandler(Action.Handler actionHandler) {
|
||||
actionHandlers.add(actionHandler);
|
||||
|
Loading…
Reference in New Issue
Block a user