/*******************************************************************************
* Copyright (c) 2016 Fabio Zadrozny and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Fabio Zadrozny <fabiofz@gmail.com> - initial API and implementation
*******************************************************************************/
package org.eclipse.e4.ui.css.swt.dom;
import org.eclipse.e4.ui.css.core.engine.CSSEngine;
import org.eclipse.e4.ui.internal.css.swt.CSSActivator;
import org.eclipse.e4.ui.internal.css.swt.dom.scrollbar.StyledTextThemedScrollBarAdapter;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.osgi.service.log.LogService;
public class StyledTextElement extends CompositeElement {
public StyledTextElement(Composite composite, CSSEngine engine) {
super(composite, engine);
}
public StyledText getStyledText() {
return (StyledText) getControl();
}
private StyledTextThemedScrollBarAdapter getScrollbarAdapter() {
return StyledTextThemedScrollBarAdapter.getScrollbarAdapter(getStyledText());
}
public void setScrollBarBackgroundColor(Color newColor) {
StyledTextThemedScrollBarAdapter scrollbarAdapter = getScrollbarAdapter();
if (scrollbarAdapter != null) {
scrollbarAdapter.setScrollBarBackgroundColor(newColor);
}
}
public void setScrollBarForegroundColor(Color newColor) {
StyledTextThemedScrollBarAdapter scrollbarAdapter = getScrollbarAdapter();
if (scrollbarAdapter != null) {
scrollbarAdapter.setScrollBarForegroundColor(newColor);
}
}
public void setScrollBarWidth(int width) {
StyledTextThemedScrollBarAdapter scrollbarAdapter = getScrollbarAdapter();
if (scrollbarAdapter != null) {
scrollbarAdapter.setScrollBarWidth(width);
}
}
public void setMouseNearScrollScrollBarWidth(int width) {
StyledTextThemedScrollBarAdapter scrollbarAdapter = getScrollbarAdapter();
if (scrollbarAdapter != null) {
scrollbarAdapter.setMouseNearScrollScrollBarWidth(width);
}
}
public void setVerticalScrollBarVisible(boolean visible) {
StyledTextThemedScrollBarAdapter scrollbarAdapter = getScrollbarAdapter();
if (scrollbarAdapter != null) {
scrollbarAdapter.setVerticalScrollBarVisible(visible);
}
}
public void setHorizontalScrollBarVisible(boolean visible) {
StyledTextThemedScrollBarAdapter scrollbarAdapter = getScrollbarAdapter();
if (scrollbarAdapter != null) {
scrollbarAdapter.setHorizontalScrollBarVisible(visible);
}
}
public void setScrollBarBorderRadius(int radius) {
StyledTextThemedScrollBarAdapter scrollbarAdapter = getScrollbarAdapter();
if (scrollbarAdapter != null) {
scrollbarAdapter.setScrollBarBorderRadius(radius);
}
}
private void setScrollBarThemed(boolean themed) {
StyledTextThemedScrollBarAdapter scrollbarAdapter = getScrollbarAdapter();
if (scrollbarAdapter != null) {
scrollbarAdapter.setScrollBarThemed(themed);
}
}
@Override
public void reset() {
super.reset();
// Default is not having the scroll bar themed.
setScrollBarThemed(false);
}
/**
* @param cssText
* either "true" or "false"
*
* Note that the user may also set
* -Dswt.enable.themedScrollBar=true/false and force it to
* true/false regardless of the CSS value.
*/
public void setScrollBarThemed(String cssText) {
String value = System.getProperty("swt.enable.themedScrollBar"); //$NON-NLS-1$
if (value != null) {
if ("true".equalsIgnoreCase(value)) {
setScrollBarThemed(true);
} else {
setScrollBarThemed(false);
}
} else if ("true".equalsIgnoreCase(cssText)) { //$NON-NLS-1$
setScrollBarThemed(true);
} else if ("false".equalsIgnoreCase(cssText)) { //$NON-NLS-1$
setScrollBarThemed(false);
} else {
CSSActivator.getDefault().log(LogService.LOG_WARNING,
"Don't know how to handle setting value: " + cssText //$NON-NLS-1$
+ " (supported: boolean or preference:bundle.qualifier.id/key)."); //$NON-NLS-1$
}
}
}