X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FPCAPanel.java;h=6638718281828c80a9164d0008fa1428077b3145;hb=bea1d9b563d2fea018de3dbde9112dd59149126e;hp=4f660a27f5e11ade8ed243446484dcf89071d849;hpb=3027bfb4b1b13af8686abcd419888e03141bd672;p=jalview.git diff --git a/src/jalview/gui/PCAPanel.java b/src/jalview/gui/PCAPanel.java index 4f660a2..6638718 100644 --- a/src/jalview/gui/PCAPanel.java +++ b/src/jalview/gui/PCAPanel.java @@ -24,16 +24,19 @@ import jalview.analysis.scoremodels.ScoreModels; import jalview.api.AlignViewportI; import jalview.api.analysis.ScoreModelI; import jalview.api.analysis.SimilarityParamsI; -import jalview.bin.Cache; +import jalview.bin.Console; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentI; import jalview.datamodel.AlignmentView; import jalview.datamodel.HiddenColumns; import jalview.datamodel.SequenceI; +import jalview.gui.ImageExporter.ImageWriterI; +import jalview.gui.JalviewColourChooser.ColourChooserListener; import jalview.jbgui.GPCAPanel; import jalview.math.RotatableMatrix.Axis; import jalview.util.ImageMaker; import jalview.util.MessageManager; +import jalview.util.Platform; import jalview.viewmodel.AlignmentViewport; import jalview.viewmodel.PCAModel; @@ -49,7 +52,6 @@ import java.awt.print.PrinterException; import java.awt.print.PrinterJob; import javax.swing.ButtonGroup; -import javax.swing.JColorChooser; import javax.swing.JMenuItem; import javax.swing.JRadioButtonMenuItem; import javax.swing.event.InternalFrameAdapter; @@ -121,8 +123,8 @@ public class PCAPanel extends GPCAPanel ScoreModelI scoreModel = ScoreModels.getInstance() .getScoreModel(modelName, ap); - setPcaModel(new PCAModel(seqstrings, seqs, nucleotide, scoreModel, - params)); + setPcaModel( + new PCAModel(seqstrings, seqs, nucleotide, scoreModel, params)); PaintRefresher.Register(this, av.getSequenceSetId()); setRotatableCanvas(new RotatableCanvas(alignPanel)); @@ -130,8 +132,6 @@ public class PCAPanel extends GPCAPanel addKeyListener(getRotatableCanvas()); validate(); - - this.setMinimumSize(new Dimension(MIN_WIDTH, MIN_HEIGHT)); } /** @@ -141,20 +141,29 @@ public class PCAPanel extends GPCAPanel protected void close_actionPerformed() { setPcaModel(null); + if (this.rc != null) + { + this.rc.sequencePoints = null; + this.rc.setAxisEndPoints(null); + this.rc = null; + } } @Override protected void bgcolour_actionPerformed() { - Color col = JColorChooser.showDialog(this, - MessageManager.getString("label.select_background_colour"), - getRotatableCanvas().getBgColour()); - - if (col != null) + String ttl = MessageManager.getString("label.select_background_colour"); + ColourChooserListener listener = new ColourChooserListener() { - getRotatableCanvas().setBgColour(col); - } - getRotatableCanvas().repaint(); + @Override + public void colourSelected(Color c) + { + rc.setBgColour(c); + rc.repaint(); + } + }; + JalviewColourChooser.showColourChooser(this, ttl, rc.getBgColour(), + listener); } /** @@ -198,10 +207,8 @@ public class PCAPanel extends GPCAPanel repaint(); if (getParent() == null) { - Desktop.addInternalFrame(this, - MessageManager.formatMessage("label.calc_title", "PCA", - getPcaModel().getScoreModelName()), - 475, 450); + addToDesktop(this, getPcaModel().getScoreModelName()); + this.setMinimumSize(new Dimension(MIN_WIDTH, MIN_HEIGHT)); } working = false; } @@ -288,7 +295,7 @@ public class PCAPanel extends GPCAPanel // JAL-2647 disabled after load from project (until save to project done) if (getPcaModel().getInputData() == null) { - Cache.log.info( + Console.info( "Unexpected call to originalSeqData_actionPerformed - should have hidden this menu action."); return; } @@ -408,59 +415,27 @@ public class PCAPanel extends GPCAPanel } } - /** - * Handler for 'Save as EPS' option - */ - @Override - protected void eps_actionPerformed() - { - makePCAImage(ImageMaker.TYPE.EPS); - } - - /** - * Handler for 'Save as PNG' option - */ - @Override - protected void png_actionPerformed() - { - makePCAImage(ImageMaker.TYPE.PNG); - } - - void makePCAImage(ImageMaker.TYPE type) + public void makePCAImage(ImageMaker.TYPE type) { int width = getRotatableCanvas().getWidth(); int height = getRotatableCanvas().getHeight(); - - ImageMaker im; - - switch (type) + ImageWriterI writer = new ImageWriterI() { - case PNG: - im = new ImageMaker(this, ImageMaker.TYPE.PNG, - "Make PNG image from PCA", width, height, null, null, null, 0, - false); - break; - case EPS: - im = new ImageMaker(this, ImageMaker.TYPE.EPS, - "Make EPS file from PCA", width, height, null, - this.getTitle(), null, 0, false); - break; - default: - im = new ImageMaker(this, ImageMaker.TYPE.SVG, - "Make SVG file from PCA", width, height, null, - this.getTitle(), null, 0, false); - } - - if (im.getGraphics() != null) - { - getRotatableCanvas().drawBackground(im.getGraphics()); - getRotatableCanvas().drawScene(im.getGraphics()); - if (getRotatableCanvas().drawAxes) + @Override + public void exportImage(Graphics g) throws Exception { - getRotatableCanvas().drawAxes(im.getGraphics()); + RotatableCanvas canvas = getRotatableCanvas(); + canvas.drawBackground(g); + canvas.drawScene(g); + if (canvas.drawAxes) + { + canvas.drawAxes(g); + } } - im.writeImage(); - } + }; + String pca = MessageManager.getString("label.pca"); + ImageExporter exporter = new ImageExporter(writer, null, type, pca); + exporter.doExport(null, this, width, height, pca); } @Override @@ -638,13 +613,26 @@ public class PCAPanel extends GPCAPanel // // setMenusForViewport(); // validate(); } + + @Override + public void addProgressBar(long id, String message) + { + progressBar.addProgressBar(id, message); + } + + @Override + public void removeProgressBar(long id) + { + progressBar.removeProgressBar(id); + } @Override public void registerHandler(final long id, final IProgressIndicatorHandler handler) { progressBar.registerHandler(id, handler); - // if (progressBarHandlers == null || !progressBars.contains(Long.valueOf(id))) + // if (progressBarHandlers == null || + // !progressBars.contains(Long.valueOf(id))) // { // throw new // Error(MessageManager.getString("error.call_setprogressbar_before_registering_handler")); @@ -791,4 +779,12 @@ public class PCAPanel extends GPCAPanel getRotatableCanvas().ap = panel; PaintRefresher.Register(PCAPanel.this, panel.av.getSequenceSetId()); } + + public static void addToDesktop(PCAPanel panel, String modelName) + { + Dimension dim = Platform.getDimIfEmbedded(panel, 475, 450); + Desktop.addInternalFrame(panel, MessageManager.formatMessage( + "label.calc_title", "PCA", modelName), dim.width, + dim.height); + } }