Author: Andreas Tille <tille@debian.org>
Date: Mon, 07 Feb 2011 12:02:43 +0100
Description: The web GUI (servlet) is not used nor shipped in the
    binary packages.  If the files that are belonging to this gui
    are removed there is no need for shipping lib/jwt/*.jar which
    is one further step in the direction to remove binary only code
    from the tarball

--- a/src/figtree/webui/FigTreeWebApplication.java
+++ /dev/null
@@ -1,298 +0,0 @@
-package figtree.webui;
-
-import java.awt.BasicStroke;
-import java.awt.Font;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.Reader;
-import java.text.DecimalFormat;
-import java.util.ArrayList;
-import java.util.List;
-
-import jebl.evolution.io.ImportException;
-import jebl.evolution.io.NewickImporter;
-import jebl.evolution.trees.RootedTree;
-import jebl.evolution.trees.SortedRootedTree;
-import jebl.evolution.trees.TransformedRootedTree;
-import jebl.evolution.trees.Tree;
-import eu.webtoolkit.jwt.AlignmentFlag;
-import eu.webtoolkit.jwt.Signal;
-import eu.webtoolkit.jwt.Signal1.Listener;
-import eu.webtoolkit.jwt.WApplication;
-import eu.webtoolkit.jwt.WBoxLayout;
-import eu.webtoolkit.jwt.WCheckBox;
-import eu.webtoolkit.jwt.WComboBox;
-import eu.webtoolkit.jwt.WContainerWidget;
-import eu.webtoolkit.jwt.WEnvironment;
-import eu.webtoolkit.jwt.WFormWidget;
-import eu.webtoolkit.jwt.WHBoxLayout;
-import eu.webtoolkit.jwt.WIntValidator;
-import eu.webtoolkit.jwt.WLabel;
-import eu.webtoolkit.jwt.WLength;
-import eu.webtoolkit.jwt.WSpinBox;
-import eu.webtoolkit.jwt.WVBoxLayout;
-import figtree.application.FigTreeNexusImporter;
-import figtree.panel.SimpleLabelPainter;
-import figtree.treeviewer.TreePane;
-import figtree.treeviewer.treelayouts.PolarTreeLayout;
-import figtree.treeviewer.treelayouts.RadialTreeLayout;
-import figtree.treeviewer.treelayouts.RectilinearTreeLayout;
-
-public class FigTreeWebApplication extends WApplication {
-	private TreeWidget treeWidget;
-	private SimpleLabelPainter tipPainter;
-	private SimpleLabelPainter nodePainter;
-	private SimpleLabelPainter branchPainter;
-
-	public FigTreeWebApplication(WEnvironment env) {
-		super(env);
-		setTitle("FigTree");
-		useStyleSheet("figtree.css");
-
-		WVBoxLayout layout = new WVBoxLayout(getRoot());
-
-		FileUploadWidget uploadWidget = new FileUploadWidget();
-		uploadWidget.fileUploaded().addListener(this, new Listener<String>() {
-			@Override
-			public void trigger(String path) {
-				readFile(path);
-			}
-		});
-		
-		layout.addWidget(uploadWidget);
-		layout.addWidget(treeWidget = new TreeWidget(), 1);
-		treeWidget.setStyleClass("tree");
-
-		readFile("/etc/figtree/example.tree");
-
-		treeWidget.getTreePane().setTipLabelPainter
-			(tipPainter = new SimpleLabelPainter(SimpleLabelPainter.PainterIntent.TIP));
-		treeWidget.getTreePane().setNodeLabelPainter
-			(nodePainter = new SimpleLabelPainter(SimpleLabelPainter.PainterIntent.NODE));
-		treeWidget.getTreePane().setBranchLabelPainter
-			(branchPainter = new SimpleLabelPainter(SimpleLabelPainter.PainterIntent.BRANCH));
-
-		createControls(layout);
-	}
-
-
-	private void readFile(String path) {
-		try {
-			FileReader reader = new FileReader(path);
-			readData(reader, true);
-		} catch (FileNotFoundException e) {
-			e.printStackTrace();
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-
-
-	private void createControls(WVBoxLayout layout) {
-		WHBoxLayout controlsLayout = new WHBoxLayout();
-		layout.addLayout(controlsLayout, 0, AlignmentFlag.AlignJustify, AlignmentFlag.AlignTop);
-		
-		WVBoxLayout column = new WVBoxLayout();
-		controlsLayout.addLayout(column, 0, AlignmentFlag.AlignJustify, AlignmentFlag.AlignMiddle);
-
-		WComboBox box = new WComboBox();
-		addField(column, "Layout: ", box, AlignmentFlag.AlignLeft);
-
-		box.addItem("Rectilinear");
-		box.addItem("Radial");
-		box.addItem("Polar");
-		box.activated().addListener(this, new Listener<Integer>() {
-			@Override
-			public void trigger(Integer choice) {
-				switch (choice) {
-				case 0:
-					treeWidget.getTreePane().setTreeLayout(new RectilinearTreeLayout()); break;
-				case 1:
-					treeWidget.getTreePane().setTreeLayout(new RadialTreeLayout()); break;
-				case 2:
-					treeWidget.getTreePane().setTreeLayout(new PolarTreeLayout());
-				}
-			}
-		});
-
-		column = new WVBoxLayout();
-		controlsLayout.addLayout(column, 0, AlignmentFlag.AlignJustify, AlignmentFlag.AlignMiddle);
-
-		WSpinBox spinBox = new WSpinBox();
-		spinBox.setValue(2);
-		spinBox.setRange(0, 48);
-		spinBox.setMaxLength(3);
-		addField(column, "Line Weight: ", spinBox, AlignmentFlag.AlignRight);
-		
-		spinBox.valueChanged().addListener(this, new Listener<Double>() {
-			@Override
-			public void trigger(Double value) {
-				treeWidget.getTreePane().setBranchStroke(new BasicStroke(value.floatValue()));
-			}
-		});
-		spinBox.valueChanged().trigger(spinBox.getValue());
-		
-		spinBox = new WSpinBox();
-		spinBox.setValue(6);
-		spinBox.setRange(0, 48);
-		spinBox.setValidator(new WIntValidator(0, 48));
-		spinBox.setMaxLength(3);
-		addField(column, "Font Size: ", spinBox, AlignmentFlag.AlignRight);
-		
-		spinBox.valueChanged().addListener(this, new Listener<Double>() {
-			@Override
-			public void trigger(Double value) {
-				tipPainter.setFont(new Font("sansserif", Font.PLAIN, value.intValue()));
-			}
-		});
-		spinBox.valueChanged().trigger(spinBox.getValue());
-		
-		column = new WVBoxLayout();
-		controlsLayout.addLayout(column, 0, AlignmentFlag.AlignJustify, AlignmentFlag.AlignMiddle);
-
-		final WCheckBox midPointCheck = new WCheckBox("Midpoint root");
-		
-		midPointCheck.setChecked(false);
-		addField(column, null, midPointCheck, AlignmentFlag.AlignRight);
-
-		midPointCheck.changed().addListener(this, new Signal.Listener() {
-			@Override
-			public void trigger() {
-				if (midPointCheck.isChecked()) {
-                    treeWidget.getTreePane().setRootingOn(true);
-                    treeWidget.getTreePane().setRootingType(TreePane.RootingType.MID_POINT);
-                } else {
-                	treeWidget.getTreePane().setRootingOn(false);
-                	treeWidget.getTreePane().setRootingType(TreePane.RootingType.USER_ROOTING);
-                }
-			}
-		});
-		
-		final WComboBox orderCombo = new WComboBox();
-		orderCombo.addItem("Off");
-		orderCombo.addItem("Increasing");
-		orderCombo.addItem("Decreasing");
-		orderCombo.resize(new WLength(120), WLength.Auto);
-		
-		addField(column, "Order: ", orderCombo, AlignmentFlag.AlignRight);
-		
-		orderCombo.changed().addListener(this, new Signal.Listener() {
-			@Override
-			public void trigger() {
-				if (orderCombo.getCurrentIndex() == 0) {
-					treeWidget.getTreePane().setOrderBranchesOn(false);
-                } else {
-                	treeWidget.getTreePane().setOrderBranchesOn(true);
-                	treeWidget.getTreePane().setBranchOrdering(SortedRootedTree.BranchOrdering.values()[orderCombo.getCurrentIndex() - 1]);
-                }
-			}
-		});
-		
-		final WComboBox transformCombo = new WComboBox();
-		transformCombo.addItem("Off");
-		transformCombo.addItem(TransformedRootedTree.Transform.CLADOGRAM.toString());
-		transformCombo.addItem(TransformedRootedTree.Transform.PROPORTIONAL.toString());
-		transformCombo.addItem(TransformedRootedTree.Transform.EQUAL_LENGTHS.toString());
-		transformCombo.resize(new WLength(120), WLength.Auto);
-
-		addField(column, "Transform: ", transformCombo, AlignmentFlag.AlignRight);
-		
-        transformCombo.changed().addListener(this, new Signal.Listener() {
-        	@Override
-            public void trigger() {
-                if (transformCombo.getCurrentIndex() == 0) {
-                	treeWidget.getTreePane().setTransformBranchesOn(false);
-                } else {
-                	treeWidget.getTreePane().setTransformBranchesOn(true);
-                	treeWidget.getTreePane().setBranchTransform(TransformedRootedTree.Transform.values()[transformCombo.getCurrentIndex() - 1]);
-                }
-            }
-        });
-
-		column = new WVBoxLayout();
-		controlsLayout.addLayout(column, 0, AlignmentFlag.AlignJustify, AlignmentFlag.AlignMiddle);
-		WComboBox combo = addLabelCombo(column, tipPainter, "Tips: ");
-		combo.setCurrentIndex(1);
-		combo.changed().trigger();
-		addLabelCombo(column, nodePainter, "Nodes: ");
-		addLabelCombo(column, branchPainter, "Branches: ");
-	}
-	
-
-	private WComboBox addLabelCombo(WVBoxLayout column,	final SimpleLabelPainter labelPainter, String title) {
-		labelPainter.setNumberFormat(new DecimalFormat("#.####"));
-		labelPainter.setFont(new Font("sansserif", Font.PLAIN, 8));
-		
-		String[] attributes = labelPainter.getAttributes();
-
-		final WComboBox displayAttributeCombo = new WComboBox();
-		displayAttributeCombo.addItem("None");
-		for (String attr : attributes) {
-			displayAttributeCombo.addItem(attr);
-		}
-
-		addField(column, title, displayAttributeCombo, AlignmentFlag.AlignRight);
-
-		displayAttributeCombo.changed().addListener(this, new Signal.Listener() {
-			@Override
-			public void trigger() {
-		        String attribute = (String)displayAttributeCombo.getCurrentText().toString();
-			    if (attribute.equals("none")) {
-				    labelPainter.setVisible(false);
-			    } else {
-		            labelPainter.setDisplayAttribute(attribute);
-				    labelPainter.setVisible(true);
-			    }
-		    }
-		});
-		displayAttributeCombo.changed().trigger();
-		
-		return displayAttributeCombo;
-	}
-
-
-	private void addField(WBoxLayout controlsLayout, String label, WFormWidget widget, AlignmentFlag alignment) {
-		WContainerWidget w = new WContainerWidget();
-		if (label != null) {
-			WLabel l;
-			w.addWidget(l = new WLabel(label));
-			l.setBuddy(widget);
-		}
-		w.addWidget(widget);
-		controlsLayout.addWidget(w, 0, alignment, AlignmentFlag.AlignTop);
-	}
-
-
-	protected boolean readData(Reader reader, boolean isNexus) throws IOException {
-
-		List<Tree> trees = new ArrayList<Tree>();
-
-		try {
-			if (isNexus) {
-				FigTreeNexusImporter importer = new FigTreeNexusImporter(reader);
-				while (importer.hasTree()) {
-					Tree tree = importer.importNextTree();
-					trees.add(tree);
-				}
-			} else {
-				NewickImporter importer = new NewickImporter(reader, true);
-				while (importer.hasTree()) {
-					Tree tree = importer.importNextTree();
-					trees.add(tree);
-				}
-			}
-
-			if (trees.size() == 0) {
-				throw new ImportException("This file contained no trees.");
-			}
-
-			treeWidget.getTreePane().setTree((RootedTree) trees.get(0));
-		} catch (ImportException ie) {
-			// FIXME
-			return false;
-		}
-
-		return true;
-	}
-}
--- a/src/figtree/webui/FileUploadWidget.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package figtree.webui;
-
-import eu.webtoolkit.jwt.Side;
-import eu.webtoolkit.jwt.Signal;
-import eu.webtoolkit.jwt.Signal1;
-import eu.webtoolkit.jwt.WApplication;
-import eu.webtoolkit.jwt.WContainerWidget;
-import eu.webtoolkit.jwt.WFileUpload;
-import eu.webtoolkit.jwt.WLabel;
-import eu.webtoolkit.jwt.WText;
-
-public class FileUploadWidget extends WContainerWidget {
-	
-	private WFileUpload fileUpload;
-	private Signal1<String> fileUploaded = new Signal1<String>();
-	private WLabel label;
-	private WText currentTree;
-
-	public FileUploadWidget() {
-		currentTree = new WText(this);
-		currentTree.setStyleClass("filename");
-		currentTree.setInline(false);
-		currentTree.setFloatSide(Side.Right);
-		label = new WLabel("Upload tree: ", this);
-		createUpload();
-	}
-
-	private void createUpload() {
-		fileUpload = new WFileUpload(this);
-		fileUpload.changed().addListener(this, new Signal.Listener() {
-			@Override
-			public void trigger() {
-				fileUpload.upload();
-			} });
-
-		fileUpload.uploaded().addListener(this, new Signal.Listener() {
-			@Override
-			public void trigger() {
-				handleUpload();
-			}
-		});
-	}
-
-	private void handleUpload() {
-		WApplication.getInstance().setTitle("FigTree: " + fileUpload.getClientFileName());
-		currentTree.setText("Read file: <i>" + fileUpload.getClientFileName() + "</i>");
-		fileUploaded.trigger(fileUpload.getSpoolFileName());
-
-		fileUpload.remove();
-		createUpload();
-	}
-
-	public Signal1<String> fileUploaded() {
-		return fileUploaded;
-	}
-}
--- a/src/figtree/webui/Main.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package figtree.webui;
-
-import eu.webtoolkit.jwt.WApplication;
-import eu.webtoolkit.jwt.WEnvironment;
-import eu.webtoolkit.jwt.WtServlet;
-
-public class Main extends WtServlet {
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = -7955893733032239397L;
-
-	@Override
-	public WApplication createApplication(WEnvironment env) {
-		return new FigTreeWebApplication(env);
-	}
-
-}
--- a/src/figtree/webui/TreeWidget.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package figtree.webui;
-
-import java.awt.Color;
-import java.awt.Graphics;
-import java.awt.event.MouseEvent;
-
-import eu.webtoolkit.jwt.KeyboardModifier;
-import eu.webtoolkit.jwt.Signal1;
-import eu.webtoolkit.jwt.WLength;
-import eu.webtoolkit.jwt.WMouseEvent;
-import eu.webtoolkit.jwt.WPaintDevice;
-import eu.webtoolkit.jwt.WPaintedWidget;
-import eu.webtoolkit.jwt.WPainter;
-import eu.webtoolkit.jwt.WMouseEvent.Button;
-import eu.webtoolkit.jwt.utils.WebGraphics2D;
-import figtree.treeviewer.TreePane;
-import figtree.treeviewer.TreePaneSelector;
-import figtree.treeviewer.treelayouts.RectilinearTreeLayout;
-
-public class TreeWidget extends WPaintedWidget {
-
-	private TreePane treePane;
-	private WebGraphics2D graphics = new WebGraphics2D(new WPainter());
-
-	public TreeWidget() {
-		treePane = new TreePane() {
-			private static final long serialVersionUID = 1L; 
-
-			@Override
-			public void repaint() {
-				TreeWidget.this.update();
-			}
-
-			@Override
-			public Graphics getGraphics() {
-				return graphics;
-			}
-		};
-
-		treePane.setTreeLayout(new RectilinearTreeLayout());
-		treePane.setSelectionColor(new Color(90, 108, 128));
-		final TreePaneSelector selector = new TreePaneSelector(treePane);
-		
-		clicked().addListener(this, new Signal1.Listener<WMouseEvent>() {
-			@Override
-			public void trigger(WMouseEvent event) {
-				int dx = event.getDragDelta().x;
-				int dy = event.getDragDelta().y;
-				if (dx*dx + dy*dy < 4)
-					selector.mouseClicked(convertMouseEvent(event, MouseEvent.MOUSE_CLICKED));
-			}
-		});
-		
-		mouseWentDown().addListener(this, new Signal1.Listener<WMouseEvent>() {
-			@Override
-			public void trigger(WMouseEvent event) {
-				selector.mousePressed(convertMouseEvent(event, MouseEvent.MOUSE_PRESSED));
-			}
-		});
-
-		mouseWentUp().addListener(this, new Signal1.Listener<WMouseEvent>() {
-			@Override
-			public void trigger(WMouseEvent event) {
-				selector.mouseReleased(convertMouseEvent(event, MouseEvent.MOUSE_RELEASED));
-			}
-		});
-
-		mouseDragged().addListener(this, new Signal1.Listener<WMouseEvent>() {
-			@Override
-			public void trigger(WMouseEvent event) {
-				selector.mouseDragged(convertMouseEvent(event, MouseEvent.MOUSE_DRAGGED));
-			}
-		});
-	}
-	
-	MouseEvent convertMouseEvent(WMouseEvent event, int type) {
-		int modifiers = 0;
-		
-		if (event.getModifiers().contains(KeyboardModifier.AltModifier))
-			modifiers |= MouseEvent.ALT_DOWN_MASK;
-		if (event.getModifiers().contains(KeyboardModifier.ShiftModifier))
-			modifiers |= MouseEvent.SHIFT_DOWN_MASK;
-		if (event.getModifiers().contains(KeyboardModifier.ControlModifier))
-			modifiers |= MouseEvent.CTRL_DOWN_MASK;
-		if (event.getModifiers().contains(KeyboardModifier.MetaModifier))
-			modifiers |= MouseEvent.META_DOWN_MASK;
-		
-		int button = 0;
-		
-		if (event.getButton() == Button.LeftButton) {
-			modifiers |= MouseEvent.BUTTON1_DOWN_MASK;
-			button = MouseEvent.BUTTON1;
-		} else if (event.getButton() == Button.MiddleButton) {
-			modifiers |= MouseEvent.BUTTON2_DOWN_MASK;
-			button = MouseEvent.BUTTON2;
-		} else if (event.getButton() == Button.RightButton) {
-			modifiers |= MouseEvent.BUTTON3_DOWN_MASK;
-			button = MouseEvent.BUTTON3;
-		}
-		
-		return new MouseEvent(treePane, type, System.currentTimeMillis(),
-					modifiers, event.getWidget().x, event.getWidget().y, 1, event.getButton() == Button.RightButton, button);
-	}
-
-	@Override
-	public void resize(WLength width, WLength height) {
-		super.resize(width, height);
-		treePane.setSize((int)width.toPixels(), (int)height.toPixels());
-	}
-	
-
-	@Override
-	protected void layoutSizeChanged(int width, int height) {
-		super.layoutSizeChanged(width, height);
-		treePane.setSize(width, height);
-	}	
-	
-	@Override
-	protected void paintEvent(WPaintDevice paintDevice) {
-		WPainter painter = new WPainter(paintDevice);
-		WebGraphics2D graphics = new WebGraphics2D(painter);		
-		treePane.paint(graphics);
-	}
-
-	public TreePane getTreePane() {
-		return treePane;
-	}
-}
