trying to make theme customizable
This commit is contained in:
parent
39dde1d9a7
commit
8cb4c22cc8
4 changed files with 898 additions and 25 deletions
|
@ -9,6 +9,8 @@
|
||||||
package ch.ethz.seb.sebserver.gui;
|
package ch.ethz.seb.sebserver.gui;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.servlet.RequestDispatcher;
|
import javax.servlet.RequestDispatcher;
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
|
@ -16,6 +18,9 @@ import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.eclipse.rap.rwt.RWT;
|
||||||
|
import org.eclipse.rap.rwt.client.WebClient;
|
||||||
|
import org.eclipse.rap.rwt.internal.application.ApplicationContextImpl;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
@ -31,6 +36,7 @@ import org.springframework.stereotype.Component;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
import ch.ethz.seb.sebserver.gbl.api.API;
|
import ch.ethz.seb.sebserver.gbl.api.API;
|
||||||
|
import ch.ethz.seb.sebserver.gui.RAPConfiguration.RAPSpringEntryPointFactory;
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.auth.WebserviceURIService;
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.auth.WebserviceURIService;
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
|
@ -59,24 +65,38 @@ final class InstitutionalAuthenticationEntryPoint implements AuthenticationEntry
|
||||||
final HttpServletResponse response,
|
final HttpServletResponse response,
|
||||||
final AuthenticationException authException) throws IOException, ServletException {
|
final AuthenticationException authException) throws IOException, ServletException {
|
||||||
|
|
||||||
final String requestURI = request.getRequestURI();
|
final String institutionalEndpoint = extractInstitutionalEndpoint(request);
|
||||||
|
|
||||||
log.info("No default gui entrypoint requested: {}", requestURI);
|
log.info("No default gui entrypoint requested: {}", institutionalEndpoint);
|
||||||
|
|
||||||
final String logoImageBase64 = requestLogoImage(requestURI);
|
final String logoImageBase64 = requestLogoImage(institutionalEndpoint);
|
||||||
if (StringUtils.isNotBlank(logoImageBase64)) {
|
if (StringUtils.isNotBlank(logoImageBase64)) {
|
||||||
request.getSession().setAttribute(API.PARAM_LOGO_IMAGE, logoImageBase64);
|
request.getSession().setAttribute(API.PARAM_LOGO_IMAGE, logoImageBase64);
|
||||||
|
request.getSession().setAttribute("themeId", "sms");
|
||||||
|
forwardToEntryPoint(request, response, this.guiEntryPoint);
|
||||||
} else {
|
} else {
|
||||||
request.getSession().removeAttribute(API.PARAM_LOGO_IMAGE);
|
request.getSession().removeAttribute(API.PARAM_LOGO_IMAGE);
|
||||||
response.setStatus(HttpStatus.UNAUTHORIZED.value());
|
response.setStatus(HttpStatus.UNAUTHORIZED.value());
|
||||||
|
forwardToEntryPoint(request, response, this.guiEntryPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
final RequestDispatcher dispatcher = request.getServletContext()
|
}
|
||||||
.getRequestDispatcher(this.guiEntryPoint);
|
|
||||||
|
private void forwardToEntryPoint(
|
||||||
|
final HttpServletRequest request,
|
||||||
|
final HttpServletResponse response,
|
||||||
|
final String entryPoint) throws ServletException, IOException {
|
||||||
|
|
||||||
|
final RequestDispatcher dispatcher = request
|
||||||
|
.getServletContext()
|
||||||
|
.getRequestDispatcher(entryPoint);
|
||||||
|
|
||||||
dispatcher.forward(request, response);
|
dispatcher.forward(request, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String requestLogoImage(final String requestURI) {
|
private String extractInstitutionalEndpoint(final HttpServletRequest request) {
|
||||||
|
final String requestURI = request.getRequestURI();
|
||||||
|
|
||||||
log.debug("Trying to verify insitution from requested entrypoint url: {}", requestURI);
|
log.debug("Trying to verify insitution from requested entrypoint url: {}", requestURI);
|
||||||
|
|
||||||
final String instPrefix = requestURI.replaceAll("/", "");
|
final String instPrefix = requestURI.replaceAll("/", "");
|
||||||
|
@ -84,6 +104,14 @@ final class InstitutionalAuthenticationEntryPoint implements AuthenticationEntry
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return instPrefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String requestLogoImage(final String institutionalEndpoint) {
|
||||||
|
if (StringUtils.isBlank(institutionalEndpoint)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
final RestTemplate restTemplate = new RestTemplate();
|
final RestTemplate restTemplate = new RestTemplate();
|
||||||
|
@ -97,18 +125,39 @@ final class InstitutionalAuthenticationEntryPoint implements AuthenticationEntry
|
||||||
HttpMethod.GET,
|
HttpMethod.GET,
|
||||||
HttpEntity.EMPTY,
|
HttpEntity.EMPTY,
|
||||||
String.class,
|
String.class,
|
||||||
instPrefix);
|
institutionalEndpoint);
|
||||||
|
|
||||||
if (exchange.getStatusCodeValue() == HttpStatus.OK.value()) {
|
if (exchange.getStatusCodeValue() == HttpStatus.OK.value()) {
|
||||||
return exchange.getBody();
|
return exchange.getBody();
|
||||||
} else {
|
} else {
|
||||||
log.error("Failed to verify insitution from requested entrypoint url: {}, response: {}", requestURI,
|
log.error("Failed to verify insitution from requested entrypoint url: {}, response: {}",
|
||||||
|
institutionalEndpoint,
|
||||||
exchange);
|
exchange);
|
||||||
}
|
}
|
||||||
} catch (final Exception e) {
|
} catch (final Exception e) {
|
||||||
log.error("Failed to verify insitution from requested entrypoint url: {}", requestURI, e);
|
log.error("Failed to verify insitution from requested entrypoint url: {}",
|
||||||
|
institutionalEndpoint,
|
||||||
|
e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean initInstitutionalBasedThemeEntryPoint(final String institutionalEndpoint) {
|
||||||
|
try {
|
||||||
|
final ApplicationContextImpl appContext = (ApplicationContextImpl) RWT.getApplicationContext();
|
||||||
|
final Map<String, String> properties = new HashMap<>();
|
||||||
|
properties.put(WebClient.THEME_ID, "sms");
|
||||||
|
appContext.getEntryPointManager().register(
|
||||||
|
institutionalEndpoint,
|
||||||
|
new RAPSpringEntryPointFactory(),
|
||||||
|
properties);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} catch (final Exception e) {
|
||||||
|
log.warn("Failed to dynamically set entry point for institution: {}", institutionalEndpoint, e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -21,6 +21,7 @@ import org.eclipse.rap.rwt.application.ApplicationConfiguration;
|
||||||
import org.eclipse.rap.rwt.application.EntryPoint;
|
import org.eclipse.rap.rwt.application.EntryPoint;
|
||||||
import org.eclipse.rap.rwt.application.EntryPointFactory;
|
import org.eclipse.rap.rwt.application.EntryPointFactory;
|
||||||
import org.eclipse.rap.rwt.client.WebClient;
|
import org.eclipse.rap.rwt.client.WebClient;
|
||||||
|
import org.eclipse.rap.rwt.internal.theme.ThemeUtil;
|
||||||
import org.eclipse.rap.rwt.service.ServiceManager;
|
import org.eclipse.rap.rwt.service.ServiceManager;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -34,20 +35,26 @@ import ch.ethz.seb.sebserver.gui.service.remote.webservice.auth.SEBServerAuthori
|
||||||
|
|
||||||
public class RAPConfiguration implements ApplicationConfiguration {
|
public class RAPConfiguration implements ApplicationConfiguration {
|
||||||
|
|
||||||
|
private static final String DEFAULT_THEME_NAME = "sebserver";
|
||||||
private static final Logger log = LoggerFactory.getLogger(RAPConfiguration.class);
|
private static final Logger log = LoggerFactory.getLogger(RAPConfiguration.class);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void configure(final Application application) {
|
public void configure(final Application application) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
// TODO get file path from properties
|
||||||
|
//application.addStyleSheet(RWT.DEFAULT_THEME_ID, "static/css/sebserver.css");
|
||||||
|
application.addStyleSheet(DEFAULT_THEME_NAME, "resource/theme/default.css");
|
||||||
|
application.addStyleSheet(DEFAULT_THEME_NAME, "static/css/sebserver.css");
|
||||||
|
application.addStyleSheet("sms", "resource/theme/default.css");
|
||||||
|
application.addStyleSheet("sms", "static/css/sms.css");
|
||||||
|
|
||||||
final Map<String, String> properties = new HashMap<>();
|
final Map<String, String> properties = new HashMap<>();
|
||||||
properties.put(WebClient.PAGE_TITLE, "SEB Server");
|
properties.put(WebClient.PAGE_TITLE, "SEB Server");
|
||||||
properties.put(WebClient.BODY_HTML, "<big>Loading Application<big>");
|
properties.put(WebClient.BODY_HTML, "<big>Loading Application<big>");
|
||||||
|
properties.put(WebClient.THEME_ID, DEFAULT_THEME_NAME);
|
||||||
// properties.put(WebClient.FAVICON, "icons/favicon.png");
|
// properties.put(WebClient.FAVICON, "icons/favicon.png");
|
||||||
|
application.addEntryPoint("/gui", new RAPSpringEntryPointFactory(), properties);
|
||||||
application.addEntryPoint("/gui", RAPSpringEntryPointFactory, properties);
|
|
||||||
|
|
||||||
// TODO get file path from properties
|
|
||||||
application.addStyleSheet(RWT.DEFAULT_THEME_ID, "static/css/sebserver.css");
|
|
||||||
|
|
||||||
} catch (final RuntimeException re) {
|
} catch (final RuntimeException re) {
|
||||||
throw re;
|
throw re;
|
||||||
|
@ -63,12 +70,13 @@ public class RAPConfiguration implements ApplicationConfiguration {
|
||||||
void loadMainPage(final Composite parent);
|
void loadMainPage(final Composite parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final EntryPointFactory RAPSpringEntryPointFactory = new EntryPointFactory() {
|
public static final class RAPSpringEntryPointFactory implements EntryPointFactory {
|
||||||
|
|
||||||
private boolean serviceInistialized = false;
|
private boolean initialized = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntryPoint create() {
|
public EntryPoint create() {
|
||||||
|
|
||||||
return new AbstractEntryPoint() {
|
return new AbstractEntryPoint() {
|
||||||
|
|
||||||
private static final long serialVersionUID = -1299125117752916270L;
|
private static final long serialVersionUID = -1299125117752916270L;
|
||||||
|
@ -86,6 +94,15 @@ public class RAPConfiguration implements ApplicationConfiguration {
|
||||||
"HttpSession not available from RWT.getUISession().getHttpSession()");
|
"HttpSession not available from RWT.getUISession().getHttpSession()");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final Object themeId = httpSession.getAttribute("themeId");
|
||||||
|
if (themeId != null) {
|
||||||
|
ThemeUtil.setCurrentThemeId(RWT.getUISession(parent.getDisplay()), String.valueOf(themeId));
|
||||||
|
parent.redraw();
|
||||||
|
parent.layout(true);
|
||||||
|
parent.redraw();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
final WebApplicationContext webApplicationContext = getWebApplicationContext(httpSession);
|
final WebApplicationContext webApplicationContext = getWebApplicationContext(httpSession);
|
||||||
initSpringBasedRAPServices(webApplicationContext);
|
initSpringBasedRAPServices(webApplicationContext);
|
||||||
|
|
||||||
|
@ -98,16 +115,19 @@ public class RAPConfiguration implements ApplicationConfiguration {
|
||||||
entryPointService.loadLoginPage(parent);
|
entryPointService.loadLoginPage(parent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initSpringBasedRAPServices(final WebApplicationContext webApplicationContext) {
|
private void initSpringBasedRAPServices(final WebApplicationContext webApplicationContext) {
|
||||||
if (!this.serviceInistialized) {
|
if (!this.initialized) {
|
||||||
final ServiceManager manager = RWT.getServiceManager();
|
try {
|
||||||
final DownloadService downloadService = webApplicationContext.getBean(DownloadService.class);
|
final ServiceManager manager = RWT.getServiceManager();
|
||||||
manager.registerServiceHandler(DownloadService.DOWNLOAD_SERVICE_NAME, downloadService);
|
final DownloadService downloadService = webApplicationContext.getBean(DownloadService.class);
|
||||||
this.serviceInistialized = true;
|
manager.registerServiceHandler(DownloadService.DOWNLOAD_SERVICE_NAME, downloadService);
|
||||||
|
this.initialized = true;
|
||||||
|
} catch (final IllegalArgumentException iae) {
|
||||||
|
log.warn("Failed to register DownloadService on ServiceManager. Already registered: ", iae);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,8 +148,8 @@ public class RAPConfiguration implements ApplicationConfiguration {
|
||||||
|
|
||||||
log.debug("Initialize Spring-Context on Servlet-Context: " + servletContext);
|
log.debug("Initialize Spring-Context on Servlet-Context: " + servletContext);
|
||||||
|
|
||||||
return WebApplicationContextUtils.getRequiredWebApplicationContext(
|
return WebApplicationContextUtils
|
||||||
servletContext);
|
.getRequiredWebApplicationContext(servletContext);
|
||||||
|
|
||||||
} catch (final Exception e) {
|
} catch (final Exception e) {
|
||||||
log.error("Failed to initialize Spring-Context on HttpSession: " + httpSession);
|
log.error("Failed to initialize Spring-Context on HttpSession: " + httpSession);
|
||||||
|
|
|
@ -107,7 +107,6 @@ public class WidgetFactory {
|
||||||
|
|
||||||
return new Image(device, this.image);
|
return new Image(device, this.image);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum CustomVariant {
|
public enum CustomVariant {
|
||||||
|
|
805
src/main/resources/static/css/sms.css
Normal file
805
src/main/resources/static/css/sms.css
Normal file
|
@ -0,0 +1,805 @@
|
||||||
|
* {
|
||||||
|
color: #000000;
|
||||||
|
font: normal 12px Arial, Helvetica, sans-serif;
|
||||||
|
background-image: none;
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
*:disabled {
|
||||||
|
color: #CFCFCF;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Label default theme */
|
||||||
|
Label {
|
||||||
|
font: 12px Arial, Helvetica, sans-serif;
|
||||||
|
color: #4a4a4a;
|
||||||
|
background-color: transparent;
|
||||||
|
background-image: none;
|
||||||
|
background-repeat: repeat;
|
||||||
|
background-position: left top;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
text-decoration: none;
|
||||||
|
cursor: default;
|
||||||
|
opacity: 1;
|
||||||
|
text-shadow: none;
|
||||||
|
padding: 0px 0px 0px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
Label.head {
|
||||||
|
font: bold 12px Arial, Helvetica, sans-serif;
|
||||||
|
padding: 0px 0px 0px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
Label.form-center {
|
||||||
|
padding: 5px 0px 0px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
Label.action {
|
||||||
|
font: 12px Arial, Helvetica, sans-serif;
|
||||||
|
color: #C50509;
|
||||||
|
background-color: transparent;
|
||||||
|
background-image: none;
|
||||||
|
background-repeat: repeat;
|
||||||
|
background-position: left top;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
text-decoration: none;
|
||||||
|
cursor: default;
|
||||||
|
opacity: 1;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
Label.h1 {
|
||||||
|
font: 25px Arial, Helvetica, sans-serif;
|
||||||
|
height: 28px;
|
||||||
|
padding: 0px 12px 6px 12px;
|
||||||
|
color: #1f407a;
|
||||||
|
}
|
||||||
|
|
||||||
|
Label.h2 {
|
||||||
|
font: 19px Arial, Helvetica, sans-serif;
|
||||||
|
height: 22px;
|
||||||
|
padding: 0 0 6px 0;
|
||||||
|
color: #1f407a;
|
||||||
|
}
|
||||||
|
|
||||||
|
Label.h3 {
|
||||||
|
font: bold 14px Arial, Helvetica, sans-serif;
|
||||||
|
height: 20px;
|
||||||
|
padding: 0;
|
||||||
|
color: #1f407a;
|
||||||
|
}
|
||||||
|
|
||||||
|
Label.error {
|
||||||
|
font: 10px Arial, Helvetica, sans-serif;
|
||||||
|
color: #aa0000;
|
||||||
|
}
|
||||||
|
|
||||||
|
Label:hover.imageButton {
|
||||||
|
background-color: transparent;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
Label.selection {
|
||||||
|
padding: 4px 6px 3px 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
Label:hover.selection {
|
||||||
|
color: #4a4a4a;
|
||||||
|
background-color: #b5b5b5;
|
||||||
|
background-image: gradient(linear, left top, left bottom, from(#b5b5b5),to(#b5b5b5));
|
||||||
|
padding: 4px 6px 3px 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
Label.selected {
|
||||||
|
color: #4a4a4a;
|
||||||
|
background-color: #c5c5c5;
|
||||||
|
background-image: gradient(linear, left top, left bottom, from(#c5c5c5),to(#c5c5c5));
|
||||||
|
padding: 4px 6px 3px 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
Label-SeparatorLine {
|
||||||
|
background-image: none;
|
||||||
|
background-color: transparent;
|
||||||
|
border: 1px solid #bdbdbd;
|
||||||
|
border-radius: 0px;
|
||||||
|
height: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
Composite.bordered {
|
||||||
|
border: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
Composite.header {
|
||||||
|
background-color: #000000;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
Composite.logo {
|
||||||
|
background-color: #1F407A;
|
||||||
|
}
|
||||||
|
|
||||||
|
Composite.bgLogo {
|
||||||
|
background-color: #1F407A;
|
||||||
|
background-image: url(static/images/ethz_logo_white.png);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: left center;
|
||||||
|
}
|
||||||
|
|
||||||
|
Composite.bgLogoNoImage {
|
||||||
|
background-color: transparent;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: left center;
|
||||||
|
}
|
||||||
|
|
||||||
|
Composite.bgContent {
|
||||||
|
background-color: #EAECEE;
|
||||||
|
background-image: url(static/images/blueBackground.png);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
|
||||||
|
Composite.content {
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
margin: 0 0 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Composite.actionPane {
|
||||||
|
background-color: #D3D9DB;
|
||||||
|
}
|
||||||
|
|
||||||
|
Composite.bgFooter {
|
||||||
|
background-color: #EAECEE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Composite.footer {
|
||||||
|
background-color: #1F407A;
|
||||||
|
}
|
||||||
|
|
||||||
|
Composite.login {
|
||||||
|
background-color: #EAECEE;
|
||||||
|
margin: 20px 0 0 0;
|
||||||
|
padding: 15px 8px 8px 8px;
|
||||||
|
border: 1px solid #bdbdbd;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
Composite.error {
|
||||||
|
border: 1px solid #aa0000;
|
||||||
|
border-radius: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
*.header {
|
||||||
|
font: bold 12px Arial, Helvetica, sans-serif;
|
||||||
|
color: #FFFFFF;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
*.footer {
|
||||||
|
font: bold 12px Arial, Helvetica, sans-serif;
|
||||||
|
color: #FFFFFF;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Group default theme */
|
||||||
|
Group {
|
||||||
|
font: 10px Arial, Helvetica, sans-serif;
|
||||||
|
color: #4a4a4a;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
Group-Frame {
|
||||||
|
margin: 10px 0 0 0;
|
||||||
|
padding: 10px 0px 0px 0px;
|
||||||
|
border: 1px solid #bdbdbd;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
Group-Label {
|
||||||
|
padding: 2px 10px 2px 10px;
|
||||||
|
background-color: #ffffff;
|
||||||
|
background-image: none;
|
||||||
|
background-repeat: repeat;
|
||||||
|
background-position: left top;
|
||||||
|
border: 0px solid #bdbdbd;
|
||||||
|
border-radius: 0px;
|
||||||
|
color: inherit;
|
||||||
|
margin: 0px 0px 0px 10px;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Text default */
|
||||||
|
Text {
|
||||||
|
font: 12px Arial, Helvetica, sans-serif;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
padding: 3px 10px 3px 10px;
|
||||||
|
color: #4a4a4a;
|
||||||
|
background-repeat: repeat;
|
||||||
|
background-position: left top;
|
||||||
|
background-color: #ffffff;
|
||||||
|
background-image: none;
|
||||||
|
text-shadow: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
Text.error {
|
||||||
|
border: 1px solid #aa0000;
|
||||||
|
}
|
||||||
|
|
||||||
|
Text[BORDER], Text[MULTI][BORDER] {
|
||||||
|
border: 1px solid #aaaaaa;
|
||||||
|
border-radius: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
Text[BORDER].error, Text[MULTI][BORDER].error {
|
||||||
|
border: 1px solid #aa0000;
|
||||||
|
border-radius: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
Text[BORDER]:focused, Text[MULTI][BORDER]:focused {
|
||||||
|
border: 1px solid #4f7cb1;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
Text:disabled,
|
||||||
|
Text:read-only,
|
||||||
|
Text[BORDER]:disabled,
|
||||||
|
Text[BORDER]:read-only,
|
||||||
|
Text[MULTI]:disabled,
|
||||||
|
Text[MULTI]:read-only,
|
||||||
|
Text[MULTI][BORDER]:disabled,
|
||||||
|
Text[MULTI][BORDER]:read-only {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
color: #4a4a4a;
|
||||||
|
padding: 0px 0px 0px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Combo default theme */
|
||||||
|
Combo, Combo[BORDER] {
|
||||||
|
font: 12px Arial, Helvetica, sans-serif;
|
||||||
|
color: #4a4a4a;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border: 1px solid #aaaaaa;
|
||||||
|
border-radius: 0 2px 2px 0;
|
||||||
|
background-image: none;
|
||||||
|
text-shadow: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
Combo:focused, Combo[BORDER]:focused {
|
||||||
|
text-shadow: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
Combo:disabled, Combo[BORDER]:disabled {
|
||||||
|
text-shadow: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
Combo-Button {
|
||||||
|
cursor: default;
|
||||||
|
background-color: #ffffff;
|
||||||
|
background-image: gradient(linear, left top, left bottom, from(#ffffff), to(#ffffff));
|
||||||
|
border: none;
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
Combo-Field {
|
||||||
|
padding: 3px 0px 1px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
Combo.error, , Combo[BORDER].error {
|
||||||
|
border: 1px solid #aa0000;
|
||||||
|
border-radius: 0 2px 2px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DateTime default theme */
|
||||||
|
DateTime, DateTime[BORDER] {
|
||||||
|
font: 12px Arial, Helvetica, sans-serif;
|
||||||
|
color: #4a4a4a;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border: 1px solid #aaaaaa;
|
||||||
|
border-radius: 0 2px 2px 0;
|
||||||
|
background-image: none;
|
||||||
|
text-shadow: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
DateTime, DateTime[BORDER]:focused {
|
||||||
|
text-shadow: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
DateTime-Field, DateTime-Field[BORDER] {
|
||||||
|
font: 12px Arial, Helvetica, sans-serif;
|
||||||
|
color: #4a4a4a;
|
||||||
|
background-color: #ffffff;
|
||||||
|
padding: 3px 10px 2px 10px;
|
||||||
|
text-shadow: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
DateTime-UpButton {
|
||||||
|
cursor: default;
|
||||||
|
background-color: #ffffff;
|
||||||
|
background-image: gradient(linear, left top, left bottom, from(#ffffff), to(#ffffff));
|
||||||
|
border: none;
|
||||||
|
width: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
DateTime-DownButton {
|
||||||
|
cursor: default;
|
||||||
|
background-color: #ffffff;
|
||||||
|
background-image: gradient(linear, left top, left bottom, from(#ffffff), to(#ffffff));
|
||||||
|
border: none;
|
||||||
|
width: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
DateTime-DropDownButton {
|
||||||
|
cursor: default;
|
||||||
|
background-color: #ffffff;
|
||||||
|
background-image: gradient(linear, left top, left bottom, from(#ffffff), to(#ffffff));
|
||||||
|
border: none;
|
||||||
|
width: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Message titlebar */
|
||||||
|
Shell.message {
|
||||||
|
animation: none;
|
||||||
|
border: 1px solid #bdbdbd;
|
||||||
|
background-color: #ffffff;
|
||||||
|
background-image: none;
|
||||||
|
padding: 0px;
|
||||||
|
opacity: 1;
|
||||||
|
box-shadow: none;
|
||||||
|
width: 400px;
|
||||||
|
}
|
||||||
|
|
||||||
|
Shell-Titlebar.message {
|
||||||
|
background-color: #1f407a;
|
||||||
|
background-gradient-color: #1f407a;
|
||||||
|
color: white;
|
||||||
|
background-image: gradient( linear, left top, left bottom, from( #1f407a ), to( #1f407a ) );
|
||||||
|
padding: 2px 5px 2px;
|
||||||
|
margin: 0px;
|
||||||
|
height: 22px;
|
||||||
|
font: 14px Arial, Helvetica, sans-serif;
|
||||||
|
border: none;
|
||||||
|
border-radius: 1px 1px 0px 0px;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
Shell-CloseButton:hover.message {
|
||||||
|
background-color: #C50509;
|
||||||
|
background-gradient-color: #C50509;
|
||||||
|
background-image: gradient( linear, left top, left bottom, from( #C50509 ), to( #C50509 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
font: 12px Arial, Helvetica, sans-serif;
|
||||||
|
padding: 5px 6px 5px 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Push Buttons */
|
||||||
|
Button[PUSH],
|
||||||
|
Button[PUSH]:default {
|
||||||
|
font: bold 12px Arial, Helvetica, sans-serif;
|
||||||
|
background-color: #0069B4;
|
||||||
|
background-gradient-color: #0069B4;
|
||||||
|
background-image: gradient( linear, left top, left bottom, from( #0069B4 ), to( #0069B4 ) );
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0px;
|
||||||
|
padding: 6px 15px;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
Button[PUSH]:pressed {
|
||||||
|
background-color: #444;
|
||||||
|
color: #fff;
|
||||||
|
background-gradient-color: #444;
|
||||||
|
background-image: gradient( linear, left top, left bottom, from( #444 ), to( #444 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
Button[PUSH]:hover {
|
||||||
|
background-color: #C50509;
|
||||||
|
background-gradient-color: #C50509;
|
||||||
|
background-image: gradient( linear, left top, left bottom, from( #C50509 ), to( #C50509 ) );
|
||||||
|
color: #444;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
Button[PUSH]:disabled {
|
||||||
|
background-color: transparent;
|
||||||
|
border: 1px solid #EAECEE;
|
||||||
|
color: #c0c0c0;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
Button-FocusIndicator[PUSH][BORDER] {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Push Buttons header */
|
||||||
|
Button[PUSH].header,
|
||||||
|
Button[PUSH]:default.header {
|
||||||
|
font: bold 12px Arial, Helvetica, sans-serif;
|
||||||
|
background-color: #595959;
|
||||||
|
background-gradient-color: #595959;
|
||||||
|
background-image: gradient( linear, left top, left bottom, from( #595959 ), to( #595959 ) );
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0px;
|
||||||
|
padding: 6px 15px;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
Button[PUSH]:pressed.header {
|
||||||
|
background-color: #444;
|
||||||
|
color: #fff;
|
||||||
|
background-gradient-color: #444;
|
||||||
|
background-image: gradient( linear, left top, left bottom, from( #444 ), to( #444 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
Button[PUSH]:hover.header {
|
||||||
|
background-color: #C50509;
|
||||||
|
background-gradient-color: #C50509;
|
||||||
|
background-image: gradient( linear, left top, left bottom, from( #C50509 ), to( #C50509 ) );
|
||||||
|
color: #444;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
FileUpload,
|
||||||
|
FileUpload:default,
|
||||||
|
FileUpload:hover,
|
||||||
|
FileUpload:pressed {
|
||||||
|
background-color: transparent;
|
||||||
|
background-gradient-color: transparent;
|
||||||
|
background-image: gradient( linear, left top, left bottom, from( transparent ), to( transparent ) );
|
||||||
|
border: none;
|
||||||
|
border-radius: 0px;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Sash default */
|
||||||
|
Sash {
|
||||||
|
background-image: none;
|
||||||
|
background-color: transparent;
|
||||||
|
background-color: #EAECEE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Sash:hover {
|
||||||
|
background-color: #444444;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*Standard Einstellungen fuer Trees*/
|
||||||
|
Tree {
|
||||||
|
font: bold 14px Arial, Helvetica, sans-serif;
|
||||||
|
background-color: transparent;
|
||||||
|
border: none;
|
||||||
|
color: #1f407a;
|
||||||
|
margin: 0px 0px 0px 0px;
|
||||||
|
padding: 0px 0px 0px 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
Tree[BORDER] {
|
||||||
|
border: 1px solid #eceeef;
|
||||||
|
}
|
||||||
|
|
||||||
|
TreeItem, TreeItem.treesection, Tree-RowOverlay:hover.treesection, Tree-RowOverlay:selected.treesection, Tree-RowOverlay:selected:hover.treesection {
|
||||||
|
font: bold 14px Arial, Helvetica, sans-serif;
|
||||||
|
color: #1f407a;
|
||||||
|
background-color: transparent;
|
||||||
|
text-decoration: none;
|
||||||
|
text-shadow: none;
|
||||||
|
background-image: none;
|
||||||
|
margin: 20px 20px 20px 20px;
|
||||||
|
padding: 20px 20px 20px 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
TreeItem:linesvisible:even {
|
||||||
|
background-color: #f3f3f4;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Tree-RowOverlay {
|
||||||
|
background-color: transparent;
|
||||||
|
color: inherit;
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
Tree-RowOverlay:hover {
|
||||||
|
background-color: #C50509;
|
||||||
|
color: #1F407A;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Tree-RowOverlay:selected {
|
||||||
|
background-color: #C50509;
|
||||||
|
color: #1F407A;
|
||||||
|
}
|
||||||
|
|
||||||
|
Tree-RowOverlay:selected:unfocused {
|
||||||
|
background-color: #C50509;
|
||||||
|
color: #1f407a;
|
||||||
|
}
|
||||||
|
|
||||||
|
Tree-RowOverlay:selected:hover {
|
||||||
|
background-color: #C50509;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
Tree.actions {
|
||||||
|
font: 12px Arial, Helvetica, sans-serif;
|
||||||
|
color: #4a4a4a;
|
||||||
|
background-color: transparent;
|
||||||
|
border: none;
|
||||||
|
margin: 0 0 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Tree[BORDER].actions {
|
||||||
|
border: 1px solid #eceeef;
|
||||||
|
}
|
||||||
|
|
||||||
|
TreeItem.actions {
|
||||||
|
font: 12px Arial, Helvetica, sans-serif;
|
||||||
|
color: #4a4a4a;
|
||||||
|
background-color: transparent;
|
||||||
|
text-decoration: none;
|
||||||
|
text-shadow: none;
|
||||||
|
background-image: none;
|
||||||
|
margin: 0 0 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Tree-RowOverlay:hover.actions {
|
||||||
|
background-color: #C50509;
|
||||||
|
color: #4a4a4a;
|
||||||
|
}
|
||||||
|
|
||||||
|
Tree-RowOverlay:selected.actions {
|
||||||
|
background-color: #595959;
|
||||||
|
color: #4a4a4a;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* TabFolder default theme */
|
||||||
|
|
||||||
|
TabFolder {
|
||||||
|
font: 12px Arial, Helvetica, sans-serif;
|
||||||
|
color: #4a4a4a;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
TabFolder-ContentContainer {
|
||||||
|
border: none;
|
||||||
|
border-top: 1px solid #bdbdbd;
|
||||||
|
}
|
||||||
|
|
||||||
|
TabItem {
|
||||||
|
font: 12px Arial, Helvetica, sans-serif;
|
||||||
|
color: #4a4a4a;
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
text-decoration: none;
|
||||||
|
text-shadow: none;
|
||||||
|
background-image: none;
|
||||||
|
margin: 1px 0px 0px 0px;
|
||||||
|
border: 1px solid #bdbdbd;
|
||||||
|
border-bottom: none;
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
TabItem:selected {
|
||||||
|
background-color: #D3D9DB;
|
||||||
|
background-gradient-color: #D3D9DB;
|
||||||
|
background-image: gradient( linear, left top, left bottom, from( #D3D9DB ), to( #D3D9DB ) );
|
||||||
|
color: #4a4a4a;
|
||||||
|
margin: 0px 0px 0px 0px;
|
||||||
|
border: 1px solid #bdbdbd;
|
||||||
|
border-bottom: none;
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
TabItem:hover {
|
||||||
|
background-color: #C50509;
|
||||||
|
background-gradient-color: #C50509;
|
||||||
|
background-image: gradient( linear, left top, left bottom, from( #C50509 ), to( #C50509 ) );
|
||||||
|
color: #4a4a4a;
|
||||||
|
margin: 1px 0px 0px -1px;
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
TabItem:selected:hover {
|
||||||
|
background-color: #C50509;
|
||||||
|
background-gradient-color: #C50509;
|
||||||
|
background-image: gradient( linear, left top, left bottom, from( #C50509 ), to( #C50509 ) );
|
||||||
|
color: #4a4a4a;
|
||||||
|
margin: 0px 0px 0px 0px;
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
TabItem:first {
|
||||||
|
font: 12px Arial, Helvetica, sans-serif;
|
||||||
|
color: #4a4a4a;
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
text-decoration: none;
|
||||||
|
text-shadow: none;
|
||||||
|
background-image: none;
|
||||||
|
margin: 1px 0px 0px -1px;
|
||||||
|
border: 1px solid #bdbdbd;
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
TabItem:first:hover {
|
||||||
|
background-color: #C50509;
|
||||||
|
background-gradient-color: #C50509;
|
||||||
|
background-image: gradient( linear, left top, left bottom, from( #C50509 ), to( #C50509 ) );
|
||||||
|
color: #4a4a4a;
|
||||||
|
margin: 1px 0px 0px -1px;
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
TabItem:selected:first {
|
||||||
|
background-color: #D3D9DB;
|
||||||
|
color: #4a4a4a;
|
||||||
|
margin: 0px 0px 0px 0px;
|
||||||
|
border-left: 1px solid #bdbdbd;
|
||||||
|
}
|
||||||
|
|
||||||
|
TabItem:selected:hover:first {
|
||||||
|
background-color: #C50509;
|
||||||
|
background-gradient-color: #C50509;
|
||||||
|
background-image: gradient( linear, left top, left bottom, from( #C50509 ), to( #C50509 ) );
|
||||||
|
color: #4a4a4a;
|
||||||
|
margin: 0px 0px 0px 0px;
|
||||||
|
border-left: 1px solid #bdbdbd;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Widget-ToolTip {
|
||||||
|
padding: 1px 3px 2px 3px;
|
||||||
|
background-color: #C50509;
|
||||||
|
border: 1px solid #3C5A0F;
|
||||||
|
border-radius: 2px 2px 2px 2px;
|
||||||
|
color: #4a4a4a;
|
||||||
|
opacity: 1;
|
||||||
|
animation: fadeIn 200ms linear, fadeOut 600ms ease-out;
|
||||||
|
box-shadow: 3px 4px 2px rgba(0, 0, 0, 0.3);
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget-ToolTip-Pointer {
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Table default theme */
|
||||||
|
Table {
|
||||||
|
font: 12px Arial, Helvetica, sans-serif;
|
||||||
|
background-color: #ffffff;
|
||||||
|
background-image: none;
|
||||||
|
color: #4a4a4a;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
Table[BORDER] {
|
||||||
|
border: 1px solid #bdbdbd;
|
||||||
|
}
|
||||||
|
|
||||||
|
TableColumn {
|
||||||
|
font: 12px Arial, Helvetica, sans-serif;
|
||||||
|
background-color: #595959;
|
||||||
|
background-gradient-color: #595959;
|
||||||
|
background-image: gradient( linear, left top, left bottom, from( #595959 ), to( #595959 ) );
|
||||||
|
padding: 4px 3px 4px 3px;
|
||||||
|
|
||||||
|
color: #FFFFFF;
|
||||||
|
border-bottom: 1px solid #bdbdbd;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
TableColumn:hover {
|
||||||
|
background-color: #595959;
|
||||||
|
background-gradient-color: #595959;
|
||||||
|
background-image: gradient( linear, left top, left bottom, from( #595959 ), to( #595959 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
TableItem, TableItem:linesvisible:even:rowtemplate {
|
||||||
|
background-color: transparent;
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
text-shadow: none;
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
TableItem:linesvisible:even {
|
||||||
|
background-color: #ffffff;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
Table-RowOverlay {
|
||||||
|
background-color: transparent;
|
||||||
|
color: inherit;
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
Table-RowOverlay:hover {
|
||||||
|
color: #4a4a4a;
|
||||||
|
background-color: #b5b5b5;
|
||||||
|
background-image: gradient(linear, left top, left bottom, from(#b5b5b5), to(#b5b5b5));
|
||||||
|
}
|
||||||
|
|
||||||
|
Table-RowOverlay:selected {
|
||||||
|
color: #4a4a4a;
|
||||||
|
background-color: #c5c5c5;
|
||||||
|
background-image: gradient(linear, left top, left bottom, from(#c5c5c5),to(#c5c5c5));
|
||||||
|
}
|
||||||
|
|
||||||
|
Table-RowOverlay:selected:unfocused {
|
||||||
|
color: #4a4a4a;
|
||||||
|
background-color: #c5c5c5;
|
||||||
|
background-image: gradient(linear, left top, left bottom, from(#c5c5c5),to(#c5c5c5));
|
||||||
|
}
|
||||||
|
|
||||||
|
Table-RowOverlay:linesvisible:even:hover {
|
||||||
|
color: #4a4a4a;
|
||||||
|
background-color: #b5b5b5;
|
||||||
|
background-image: gradient(linear, left top, left bottom, from(#b5b5b5),to(#b5b5b5));
|
||||||
|
}
|
||||||
|
|
||||||
|
Table-RowOverlay:linesvisible:even:selected {
|
||||||
|
color: #4a4a4a;
|
||||||
|
background-color: #c5c5c5;
|
||||||
|
background-image: gradient(linear, left top, left bottom, from(#c5c5c5),to(#c5c5c5));
|
||||||
|
}
|
||||||
|
|
||||||
|
Table-RowOverlay:linesvisible:even:selected:unfocused {
|
||||||
|
background-color: #c5c5c5;
|
||||||
|
background-image: gradient(linear, left top, left bottom, from(#c5c5c5),to(#c5c5c5));
|
||||||
|
color: #4a4a4a;
|
||||||
|
}
|
||||||
|
|
||||||
|
TableColumn-SortIndicator {
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
TableColumn-SortIndicator:up {
|
||||||
|
background-image: url( themes/images/column/sort-indicator-up.png );
|
||||||
|
}
|
||||||
|
|
||||||
|
TableColumn-SortIndicator:down {
|
||||||
|
background-image: url( themes/images/column/sort-indicator-down.png );
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
Table-Cell {
|
||||||
|
spacing: 3px;
|
||||||
|
padding: 5px 3px 5px 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
Table-GridLine, Table-GridLine:vertical:rowtemplate {
|
||||||
|
color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
Table-GridLine:vertical, Table-GridLine:header, Table-GridLine:horizontal:rowtemplate {
|
||||||
|
color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue