From 6d81b2dfa1a2ddb9192b864cc8f4585469bddadd Mon Sep 17 00:00:00 2001 From: tkellner Date: Mon, 1 Oct 2012 08:30:40 +0000 Subject: Configuration and Main Bar Buttons git-svn-id: https://svn.iaik.tugraz.at/svn/egiz/prj/current/12PDF-OVER-4.0@12534 3a0b52a2-8410-0410-bc02-ff6273a87459 --- .../asit/pdfover/gui/controls/MainBarButton.java | 183 +++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarButton.java (limited to 'trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarButton.java') diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarButton.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarButton.java new file mode 100644 index 00000000..631ee3e8 --- /dev/null +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarButton.java @@ -0,0 +1,183 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.controls; + +// Imports +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.PaintEvent; +import org.eclipse.swt.events.PaintListener; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Region; +import org.eclipse.swt.widgets.Canvas; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Listener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * + */ +public abstract class MainBarButton extends Canvas { + /** + * @param parent + * @param style + */ + public MainBarButton(Composite parent, int style) { + super(parent, style); + this.addPaintListener(new PaintListener() { + + @Override + public void paintControl(PaintEvent e) { + MainBarButton.this.paintButton(e); + } + }); + + this.addListener(SWT.Resize, new Listener() { + + @Override + public void handleEvent(Event event) { + MainBarButton.this.setRegion(MainBarButton.this + .getCustomRegion()); + MainBarButton.this.redraw(); + } + }); + + this.inactiveBackground = new Color(getDisplay(), 0x4B, 0x95, 0x00); + this.activeBackground = new Color(getDisplay(), 0x98, 0xF2, 0x3D); + + } + + private Color inactiveBackground = null; + + /** + * @param inactiveBackground + * the inactiveBackground to set + */ + public void setInactiveBackground(Color inactiveBackground) { + this.inactiveBackground = inactiveBackground; + } + + /** + * @param activeBackground + * the activeBackground to set + */ + public void setActiveBackground(Color activeBackground) { + this.activeBackground = activeBackground; + } + + private Color activeBackground = null; + + private String text = ""; //$NON-NLS-1$ + + private boolean active = true; + + private Image image = null; + + /** + * @return the imgage + */ + public Image getImage() { + return this.image; + } + + /** + * @param imgage + * the imgage to set + */ + public void setImage(Image image) { + this.image = image; + } + + /** + * Sets if this button is active + * + * @param active + * the active state + */ + public void setActive(boolean active) { + this.active = active; + if (this.active) { + this.setBackground(this.activeBackground); + } else { + this.setBackground(this.inactiveBackground); + } + } + + /** + * Gets if this button is active + * + * @return the active state + */ + public boolean getActive() { + return this.active; + } + + /** + * @return the text + */ + public String getText() { + return this.text; + } + + /** + * @param text + * the text to set + */ + public void setText(String text) { + this.text = text; + } + + /** + * SLF4J Logger instance + **/ + private static final Logger log = LoggerFactory + .getLogger(MainBarButton.class); + + /** + * @param e + */ + protected void paintButton(PaintEvent e) { + Point size = this.getSize(); + int height = size.y - 2; + + int width = size.x; + + if (this.image == null) { + int textlen = 0; + + if (this.getText() != null) { + textlen = this.getText().length(); + } + + int texty = (height - e.gc.getFontMetrics().getHeight()) / 2; + int textx = (width - e.gc.getFontMetrics().getAverageCharWidth() + * textlen) / 2; + e.gc.drawText(this.getText(), textx, texty); + } else { + int imgx = (width - height) / 2; + Image tmp = new Image(getDisplay(), this.image.getImageData().scaledTo(height, height)); + e.gc.drawImage(tmp, imgx, 0); + } + } + + /** + * @return + */ + protected abstract Region getCustomRegion(); +} -- cgit v1.2.3