package app.navigps.gui.detailspanel.LoacationManager;
import app.navigps.gui.detailspanel.*;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
/**
*
* @author wara
*/
public class LeftLocation extends LocationManager{
private boolean needRevalidate = false;
public LeftLocation(RoundWindow rw){
super(rw);
}
@Override
public Rectangle updateLocation(Container src) {
return new Rectangle(src.getLocation().x,
(src.getHeight()-root.getHeight())>>1,
root.getWidth(),
root.getHeight());
}
@Override
public void mousePressed(MouseEvent e) {
int xr = root.getWidth()-e.getX();
if(e.getButton()==MouseEvent.BUTTON1 && xr<sensitiveMouseReaction){
System.out.println("Resize X side "+getClass().getSimpleName());
resizeWidthPanel = true;
}else if(e.getButton()==MouseEvent.BUTTON1 && e.getY()<sensitiveMouseReaction){
System.out.println("Resize Y side "+getClass().getSimpleName());
resizeHeghtPanel = true;
}
}
@Override
public void mouseReleased(MouseEvent e) {
if(needRevalidate || !root.isDynamicRevalidate()){
root.revalidate();
needRevalidate=false;
}
resizeWidthPanel = false;
resizeHeghtPanel = false;
}
@Override
public void mouseDragged(MouseEvent e) {
if(resizeWidthPanel || resizeHeghtPanel){
int height = 0;
if(resizeWidthPanel){
root.setSize(e.getX()+4, root.getHeight());
}
else{
height = root.getHeight()-e.getY();
root.setSize(root.getWidth(), height);
}
root.updatePosition();
needRevalidate=true;
}
}
@Override
public void mouseMoved(MouseEvent e) {
int xr = root.getWidth()-e.getX();
//System.out.println("xr: "+xr);
if(xr<sensitiveMouseReaction||e.getY()<sensitiveMouseReaction){
root.setCursor(Cursor.getPredefinedCursor( xr<sensitiveMouseReaction ?
Cursor.W_RESIZE_CURSOR:Cursor.N_RESIZE_CURSOR));
cursorChanged = true;
}else if(cursorChanged && !resizeWidthPanel&&!resizeHeghtPanel){
root.setCursor(Cursor.getDefaultCursor());
}
}
}