summaryrefslogtreecommitdiff
path: root/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarButton.java
diff options
context:
space:
mode:
authortkellner <tkellner@174cde9d-5d70-4d2a-aa98-46368bc2aaf7>2013-04-10 18:57:07 +0000
committertkellner <tkellner@174cde9d-5d70-4d2a-aa98-46368bc2aaf7>2013-04-10 18:57:07 +0000
commita8222b9d16145d8b2f8803d13e5afe2b99d47fc0 (patch)
tree36637499e140a59d6e43f74eaceb3e23ec3e1f07 /pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarButton.java
parent9f07d0ac1f3d53d03a4f105b1b99dccd4ac2d473 (diff)
downloadpdf-over-a8222b9d16145d8b2f8803d13e5afe2b99d47fc0.tar.gz
pdf-over-a8222b9d16145d8b2f8803d13e5afe2b99d47fc0.tar.bz2
pdf-over-a8222b9d16145d8b2f8803d13e5afe2b99d47fc0.zip
Configuration and Main Bar Buttons
git-svn-id: https://joinup.ec.europa.eu/svn/pdf-over/trunk@53 174cde9d-5d70-4d2a-aa98-46368bc2aaf7
Diffstat (limited to 'pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarButton.java')
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarButton.java183
1 files changed, 183 insertions, 0 deletions
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarButton.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarButton.java
new file mode 100644
index 00000000..631ee3e8
--- /dev/null
+++ b/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();
+}