X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src2%2Ffr%2Forsay%2Flri%2Fvarna%2Fcomponents%2FGradientEditorPanel.java;fp=src2%2Ffr%2Forsay%2Flri%2Fvarna%2Fcomponents%2FGradientEditorPanel.java;h=0000000000000000000000000000000000000000;hb=d27359893c99db0e749a59d8a7ab73ea751da09e;hp=f6d835a8002ea5fac455152dd71ec6a4890349e6;hpb=9f55415c9f8005e9dcd8243453883ff853fd5b76;p=jalview.git diff --git a/src2/fr/orsay/lri/varna/components/GradientEditorPanel.java b/src2/fr/orsay/lri/varna/components/GradientEditorPanel.java deleted file mode 100644 index f6d835a..0000000 --- a/src2/fr/orsay/lri/varna/components/GradientEditorPanel.java +++ /dev/null @@ -1,344 +0,0 @@ -package fr.orsay.lri.varna.components; - -import java.awt.Color; -import java.awt.Cursor; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.RenderingHints; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.awt.event.MouseMotionListener; - -import javax.swing.JColorChooser; -import javax.swing.JPanel; - -import fr.orsay.lri.varna.models.rna.ModeleColorMap; - -public class GradientEditorPanel extends JPanel implements MouseListener, MouseMotionListener{ - ModeleColorMap _mcm; - - public GradientEditorPanel (ModeleColorMap mcm) - { - _mcm = mcm; - this.addMouseListener( this); - this.addMouseMotionListener(this); - } - - public void setColorMap(ModeleColorMap mcm) - { - _mcm = mcm; - repaint(); - firePropertyChange("PaletteChanged","a","b"); - } - - public ModeleColorMap getColorMap() - { - return _mcm; - } - - private final static int TRIGGERS_SEMI_WIDTH = 2; - private final static int PALETTE_HEIGHT = 11; - private final static int REMOVE_HEIGHT = 11; - private final static int TOLERANCE = 5; - private final static int GAP = 4; - private final Color EDGES = Color.gray.brighter(); - private final Color BUTTONS = Color.LIGHT_GRAY.brighter(); - - public int getStartChoose() - { - return getHeight()-PALETTE_HEIGHT-REMOVE_HEIGHT-GAP-1; - } - - public int getEndChoose() - { - return getStartChoose()+PALETTE_HEIGHT; - } - - public int getStartRemove() - { - return getEndChoose()+GAP; - } - - public int getEndRemove() - { - return getStartRemove()+REMOVE_HEIGHT; - } - - private int getStripeHeight() - { - return getHeight()-PALETTE_HEIGHT-REMOVE_HEIGHT-2*GAP-1; - } - - private Color alterColor(Color c, int inc) - { - int nr = Math.min(Math.max(c.getRed()+inc, 0),255); - int ng = Math.min(Math.max(c.getGreen()+inc, 0),255); - int nb = Math.min(Math.max(c.getBlue()+inc, 0),255); - return new Color(nr,ng,nb); - } - - public void paintComponent(Graphics g) - { - super.paintComponent(g); - Graphics2D g2d = (Graphics2D) g; - g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, - RenderingHints.VALUE_ANTIALIAS_ON); - int height = getStripeHeight(); - double v1 = _mcm.getMinValue(); - double v2 = _mcm.getMaxValue(); - for (int i=0;i<=getWidth();i++) - { - double ratio = (((double)i)/((double)getWidth())); - double val = v1+(v2-v1)*ratio; - g2d.setColor(_mcm.getColorForValue(val)); - g2d.drawLine(i, 0, i, height); - } - for(int i=0;i<_mcm.getNumColors();i++) - { - double val = _mcm.getValueAt(i); - Color c = _mcm.getColorAt(i); - double norm = (val-_mcm.getMinValue())/(_mcm.getMaxValue()-_mcm.getMinValue()); - int x = (int)(norm*(getWidth()-1)); - // Target - g2d.setColor(c); - g2d.fillRect(x-TRIGGERS_SEMI_WIDTH+1, 0, 2*TRIGGERS_SEMI_WIDTH-1, getHeight()-1); - g2d.setColor(EDGES); - g2d.drawLine(x-TRIGGERS_SEMI_WIDTH, 0, x-TRIGGERS_SEMI_WIDTH, getHeight()); - g2d.drawLine(x+TRIGGERS_SEMI_WIDTH, 0, x+TRIGGERS_SEMI_WIDTH, getHeight()); - - if (i==0) - { - // Choose Color - g2d.setColor(EDGES); - g2d.drawRect(x,height+GAP,PALETTE_HEIGHT,2*PALETTE_HEIGHT+GAP); - g2d.setColor(c); - g2d.fillRect(x+1,height+GAP+1,PALETTE_HEIGHT-1,2*PALETTE_HEIGHT+GAP-1); - } - else if (i==_mcm.getNumColors()-1) - { - // Choose Color - g2d.setColor(EDGES); - g2d.drawRect(x-PALETTE_HEIGHT,height+GAP,PALETTE_HEIGHT,2*PALETTE_HEIGHT+GAP); - g2d.setColor(c); - g2d.fillRect(x-PALETTE_HEIGHT+1,height+GAP+1,PALETTE_HEIGHT-1,2*PALETTE_HEIGHT+GAP-1); - } - else - { - // Choose Color - g2d.setColor(EDGES); - g2d.drawRect(x-PALETTE_HEIGHT/2,height+GAP,PALETTE_HEIGHT,PALETTE_HEIGHT); - g2d.setColor(alterColor(c,-15)); - g2d.fillRect(x-PALETTE_HEIGHT/2+1,height+GAP+1,PALETTE_HEIGHT-1,PALETTE_HEIGHT-1); - g2d.setColor(c); - g2d.fillOval(x-PALETTE_HEIGHT/2+1,height+GAP+1,PALETTE_HEIGHT-1,PALETTE_HEIGHT-1); - g2d.setColor(alterColor(c,10)); - g2d.fillOval(x-PALETTE_HEIGHT/2+1+2,height+GAP+1+2,PALETTE_HEIGHT-1-4,PALETTE_HEIGHT-1-4); - - - // Remove Color - g2d.setColor(EDGES); - g2d.drawRect(x-PALETTE_HEIGHT/2,height+2*GAP+PALETTE_HEIGHT,REMOVE_HEIGHT,REMOVE_HEIGHT); - g2d.setColor(BUTTONS); - g2d.fillRect(x-PALETTE_HEIGHT/2+1,height+2*GAP+1+PALETTE_HEIGHT,REMOVE_HEIGHT-1,REMOVE_HEIGHT-1); - int xcross1 = x-PALETTE_HEIGHT/2+2; - int ycross1 = height+2*GAP+PALETTE_HEIGHT +2; - int xcross2 = xcross1+REMOVE_HEIGHT-4; - int ycross2 = ycross1+REMOVE_HEIGHT-4; - g2d.setColor(Color.red); - g2d.drawLine(xcross1, ycross1, xcross2 , ycross2); - g2d.drawLine(xcross1, ycross2, xcross2 , ycross1); - } - } - - } - - private boolean isChooseColor(int x, int y) - { - if (_selectedIndex != -1) - { - if ((_selectedIndex ==0)||(_selectedIndex == _mcm.getNumColors()-1)) - return (y<=getEndRemove() && y>=getStartChoose() && Math.abs(getXPos(_selectedIndex)-x)<=PALETTE_HEIGHT); - if (y<=getEndChoose() && y>=getStartChoose()) - { - return Math.abs(getXPos(_selectedIndex)-x)<=PALETTE_HEIGHT/2; - } - } - return false; - } - - private boolean isRemove(int x, int y) - { - if (_selectedIndex != -1) - { - if ((_selectedIndex ==0)||(_selectedIndex == _mcm.getNumColors()-1)) - return false; - if (y<=getEndRemove() && y>=getStartRemove()) - { - return Math.abs(getXPos(_selectedIndex)-x)<=PALETTE_HEIGHT/2; - } - } - return false; - } - - private int getXPos(int i) - { - double val = _mcm.getValueAt(i); - double norm = (val-_mcm.getMinValue())/(_mcm.getMaxValue()-_mcm.getMinValue()); - return (int)(norm*(getWidth()-1)); - } - - - private int locateSelectedIndex(int x, int y) - { - double dist = Double.MAX_VALUE; - int index = -1; - for(int i=0;i<_mcm.getNumColors();i++) - { - int xp = getXPos(i); - double tmpDist = Math.abs(x-xp); - if (tmpDistTOLERANCE) - { - double val = _mcm.getMinValue()+ arg0.getX()*(_mcm.getMaxValue()-_mcm.getMinValue())/(getWidth()-1); - Color nc = JColorChooser.showDialog(this, "Choose new color" ,_mcm.getColorAt(_selectedIndex)); - if (nc != null) - { - _mcm.addColor(val, nc); - repaint(); - firePropertyChange("PaletteChanged","a","b"); - } - } - } - } - - public void mouseEntered(MouseEvent arg0) { - // TODO Auto-generated method stub - - } - - public void mouseExited(MouseEvent arg0) { - // TODO Auto-generated method stub - - } - - public void mousePressed(MouseEvent arg0) { - requestFocus(); - _selectedIndex = locateSelectedIndex(arg0.getX(),arg0.getY()); - if (_selectedIndex!=-1) - { - if (isChooseColor(arg0.getX(),arg0.getY())) - { - Color nc = JColorChooser.showDialog(this, "Choose new color" ,_mcm.getColorAt(_selectedIndex)); - if (nc != null) - { - double nv = _mcm.getValueAt(_selectedIndex); - replaceEntry(_selectedIndex, nc, nv); - _selectedIndex = -1; - } - } - } - } - - public void mouseReleased(MouseEvent arg0) { - _selectedIndex = -1; - } - - private void replaceEntry(int index, Color nc, double nv) - { - ModeleColorMap cm = new ModeleColorMap(); - for(int i=0;i<_mcm.getNumColors();i++) - { - if (i!=index) - { - double val = _mcm.getValueAt(i); - Color c = _mcm.getColorAt(i); - cm.addColor(val, c); - } - else - { - cm.addColor(nv, nc); - } - } - _mcm = cm; - repaint(); - firePropertyChange("PaletteChanged","a","b"); - } - - private void removeEntry(int index) - { - ModeleColorMap cm = new ModeleColorMap(); - for(int i=0;i<_mcm.getNumColors();i++) - { - if (i!=index) - { - double val = _mcm.getValueAt(i); - Color c = _mcm.getColorAt(i); - cm.addColor(val, c); - } - } - _mcm = cm; - repaint(); - firePropertyChange("PaletteChanged","a","b"); - } - - - public void mouseDragged(MouseEvent arg0) { - if ((_selectedIndex!=-1)&&(_selectedIndex!=0)&&(_selectedIndex!=_mcm.getNumColors()-1)) - { - Color c = _mcm.getColorAt(_selectedIndex); - double val = _mcm.getMinValue()+ arg0.getX()*(_mcm.getMaxValue()-_mcm.getMinValue())/(getWidth()-1); - replaceEntry(_selectedIndex, c, val); - } - } - - public void mouseMoved(MouseEvent arg0) { - Cursor c = Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR); - _selectedIndex = locateSelectedIndex(arg0.getX(),arg0.getY()); - if (_selectedIndex!=-1) - { - if (isChooseColor(arg0.getX(),arg0.getY())) - { - c = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR); - } - else if ((_selectedIndex != 0)&&(_selectedIndex != _mcm.getNumColors()-1)) - { - if (isRemove(arg0.getX(),arg0.getY())) - { - c = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR); - } - else if (Math.abs(getXPos(_selectedIndex)-arg0.getX())<=TOLERANCE) - { - c = Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR); - } - else if (arg0.getY()