1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
| package com.litis.transcript.application;
import java.awt.event.*;
import java.awt.*;
import java.awt.*;
import java.awt.event.AdjustmentEvent.*;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import org.apache.log4j.Logger;
import com.litis.transcript.application.beans.Zoom;
public class MyAdjustmentListener implements AdjustmentListener {
// Instance de log4J pour cette classe
private static final Logger logger = Logger.getLogger(MyAdjustmentListener.class);
// This method is called whenever the value of a scrollbar is changed,
// either by the user or programmatically.
Zoom zoomControl = null;
JScrollPane manuscritScroll = null; // Correspond à la JInternalFrame de gauche
JScrollPane saisieScroll = null; // Correspond à la JInternalFrame de droite
MyAdjustmentListener(Zoom zoomControl){
this.zoomControl = zoomControl;
}
public JScrollPane getManuscritScroll() {
return manuscritScroll;
}
public void setManuscritScroll(JScrollPane manuscritScroll) {
this.manuscritScroll = manuscritScroll;
}
public JScrollPane getSaisieScroll() {
return saisieScroll;
}
public void setSaisieScroll(JScrollPane saisieScroll) {
this.saisieScroll = saisieScroll;
}
public void adjustmentValueChanged(AdjustmentEvent evt) {
Adjustable source = evt.getAdjustable();
// Determine which scrollbar fired the event
int orient = source.getOrientation();
int value = evt.getValue();
if(zoomControl.isSynchronisation() && manuscritScroll != null && saisieScroll != null){
if (orient == Adjustable.HORIZONTAL) {
// On boit bouger la barre horizontale des deux JPanel si la synchro est on
if(evt.getSource() == manuscritScroll.getHorizontalScrollBar()){ // On a bougé coté manuscrit
// On change la valeur de saisie
saisieScroll.getHorizontalScrollBar().setValue(value);
}
else{ // On a bougé coté saisie
// On change la valeur de manuscrit
manuscritScroll.getHorizontalScrollBar().setValue(value);
}
}
else if(orient == Adjustable.VERTICAL) {
// On boit bouger la barre verticale des deux JPanel si la synchro est on
if(evt.getSource() == manuscritScroll.getVerticalScrollBar()){ // On a bougé coté manuscrit
// On change la valeur de saisie
saisieScroll.getVerticalScrollBar().setValue(value);
}
else{ // On a bougé coté saisie
// On change la valeur de manuscrit
manuscritScroll.getVerticalScrollBar().setValue(value);
}
}
}
if(manuscritScroll != null && saisieScroll != null){
dimensionnerScrollPane();
if(logger.isDebugEnabled()){
logger.debug("On vient de redimensionner les ascenceurs de manuscrit et saisie, les nouvelles valeurs sont :");
logger.debug("ScrollBar Horizontale : "+manuscritScroll.getHorizontalScrollBar().getValue()+"/"+(manuscritScroll.getHorizontalScrollBar().getMaximum()-manuscritScroll.getHorizontalScrollBar().getVisibleAmount()));
logger.debug("ScrollBar Verticale : "+manuscritScroll.getVerticalScrollBar().getValue()+"/"+(manuscritScroll.getVerticalScrollBar().getMaximum()-manuscritScroll.getVerticalScrollBar().getVisibleAmount()));
logger.debug("Scrollbar horizontale pas : "+manuscritScroll.getHorizontalScrollBar().getUnitIncrement());
}
dimensionnerScrollBar();
}
}
public void dimensionnerScrollPane(){
double tempTab[] = zoomControl.getTableauZoomCombo();
manuscritScroll.setMaximumSize(new Dimension((int)(zoomControl.getWidth()*tempTab[zoomControl.getZoomComboBoxValue()]+1),(int)(zoomControl.getHeight()*tempTab[zoomControl.getZoomComboBoxValue()]+1)));
manuscritScroll.setPreferredSize(new Dimension((int)(zoomControl.getWidth()*tempTab[zoomControl.getZoomComboBoxValue()]+1),(int)(zoomControl.getHeight()*tempTab[zoomControl.getZoomComboBoxValue()]+1)));
manuscritScroll.revalidate();
if(zoomControl.isSynchronisation()){
saisieScroll.setMaximumSize(new Dimension((int)(zoomControl.getWidth()*tempTab[zoomControl.getZoomComboBoxValue()]+1),(int)(zoomControl.getHeight()*tempTab[zoomControl.getZoomComboBoxValue()]+1)));
saisieScroll.setPreferredSize(new Dimension((int)(zoomControl.getWidth()*tempTab[zoomControl.getZoomComboBoxValue()]+1),(int)(zoomControl.getHeight()*tempTab[zoomControl.getZoomComboBoxValue()]+1)));
manuscritScroll.revalidate();
}
}
public void dimensionnerScrollBar(){
double tempTab[] = zoomControl.getTableauZoomCombo();
System.out.println(manuscritScroll.getHorizontalScrollBar().getVisibleAmount());
manuscritScroll.getHorizontalScrollBar().setMaximum((int)(zoomControl.getWidth() * tempTab[zoomControl.getZoomComboBoxValue()]+1));
manuscritScroll.getVerticalScrollBar().setMaximum((int)(zoomControl.getHeight() * tempTab[zoomControl.getZoomComboBoxValue()]+1));
if(zoomControl.isSynchronisation()){
saisieScroll.getHorizontalScrollBar().setMaximum((int)(zoomControl.getWidth() * tempTab[zoomControl.getZoomComboBoxValue()]+1));
saisieScroll.getVerticalScrollBar().setMaximum((int)(zoomControl.getHeight() * tempTab[zoomControl.getZoomComboBoxValue()]+1));
}
}
public boolean doDimensionnerScrollPane(){
double tempTab[] = zoomControl.getTableauZoomCombo();
boolean retour = true;
Dimension manuscritDimension = manuscritScroll.getMaximumSize();
Dimension newManuscritDimension = new Dimension((int)(zoomControl.getWidth()*tempTab[zoomControl.getZoomComboBoxValue()]+1),(int)(zoomControl.getHeight()*tempTab[zoomControl.getZoomComboBoxValue()]+1));
if((Math.abs(manuscritDimension.getWidth() - newManuscritDimension.getWidth()) < 2) &&
(Math.abs(manuscritDimension.getHeight() - newManuscritDimension.getHeight()) < 2)){
retour = false;
}
return retour;
}
} |
Partager