package gamegui; import java.awt.*; import java.awt.event.*; public class ScrollBar extends Member { int size; int position; int scrollSpeed; boolean horizontal; public ScrollBar(String newName, int newX, int newY, int newWidth, int newHeight, int scrollSpeed, boolean horizontal) { super(newName, newX, newY, newWidth, newHeight); size = 0; position = 0; this.scrollSpeed = scrollSpeed; this.horizontal = horizontal; } public void clear() { size = 0; position = 0; } public boolean handleEvent(MouseEvent e) { int x = e.getX(), y = e.getY(); if(horizontal) { if(getY() <= y && y <= getY()+getHeight()) { if(getX() <= x && x <= getX()+getHeight()) { setPosition(position-scrollSpeed); return true; }else if(getX()+getWidth()-getHeight() <= x && x <= getX()+getWidth()) { setPosition(position+scrollSpeed); return true; } } return false; }else { if(getX() <= x && x <= getX()+getWidth()) { if(getY() <= y && y <= getY()+getWidth()) { setPosition(position-scrollSpeed); return true; }else if(getY()+getHeight()-getWidth() <= y && y <= getY()+getHeight()) { setPosition(position+scrollSpeed); return true; } } return false; } } public void draw(Graphics g) { g.setColor(Color.black); g.fillRect(getX(), getY(), getWidth(), getHeight()); g.setColor(Color.red); g.drawRect(getX(), getY(), getWidth(), getHeight()); if(horizontal) { g.drawLine(getX()+getHeight(), getY(), getX()+getHeight(), getY()+getHeight()); g.drawLine(getX()+getWidth()-getHeight(), getY(), getX()+getWidth()-getHeight(), getY()+getHeight()); g.drawLine(getX()+getHeight()+position, getY(), getX()+getHeight()+position, getY()+getHeight()); g.drawLine(getX()+getHeight()+position+size, getY(), getX()+getHeight()+position+size, getY()+getHeight()); g.drawLine(getX()+getHeight()*17/20, getY()+getHeight()*3/20, getX()+getHeight()*17/20, getY()+getHeight()*17/20); g.drawLine(getX()+getHeight()*17/20, getY()+getHeight()*17/20, getX()+getHeight()*3/20, getY()+getHeight()/2); g.drawLine(getX()+getHeight()*3/20, getY()+getHeight()/2, getX()+getHeight()*17/20, getY()+getHeight()*3/20); g.drawLine(getX()+getWidth()-getHeight()*17/20, getY()+getHeight()*3/20, getX()+getWidth()-getHeight()*17/20, getY()+getHeight()*17/20); g.drawLine(getX()+getWidth()-getHeight()*17/20, getY()+getHeight()*17/20, getX()+getWidth()-getHeight()*3/20, getY()+getHeight()/2); g.drawLine(getX()+getWidth()-getHeight()*3/20, getY()+getHeight()/2, getX()+getWidth()-getHeight()*17/20, getY()+getHeight()*3/20); }else { g.drawLine(getX(), getY()+getWidth(), getX()+getWidth(), getY()+getWidth()); g.drawLine(getX(), getY()+getHeight()-getWidth(), getX()+getWidth(), getY()+getHeight()-getWidth()); g.drawLine(getX(), getY()+getWidth()+position, getX()+getWidth(), getY()+getWidth()+position); g.drawLine(getX(), getY()+getWidth()+position+size, getX()+getWidth(), getY()+getWidth()+position+size); g.drawLine(getX()+getWidth()*3/20, getY()+getWidth()*17/20, getX()+getWidth()*17/20, getY()+getWidth()*17/20); g.drawLine(getX()+getWidth()*17/20, getY()+getWidth()*17/20, getX()+getWidth()/2, getY()+getWidth()*3/20); g.drawLine(getX()+getWidth()/2, getY()+getWidth()*3/20, getX()+getWidth()*3/20, getY()+getWidth()*17/20); g.drawLine(getX()+getWidth()*3/20, getY()+getHeight()-getWidth()*17/20, getX()+getWidth()*17/20, getY()+getHeight()-getWidth()*17/20); g.drawLine(getX()+getWidth()*17/20, getY()+getHeight()-getWidth()*17/20, getX()+getWidth()/2, getY()+getHeight()-getWidth()*3/20); g.drawLine(getX()+getWidth()/2, getY()+getHeight()-getWidth()*3/20, getX()+getWidth()*3/20, getY()+getHeight()-getWidth()*17/20); } } public int getPosition() { return position; } public int getSize() { return size; } public int getMaxSize() { if(horizontal) return getWidth()-2*getHeight(); else return getHeight()-2*getWidth(); } public void setPosition(int position) { if(position > getMaxSize()-size) this.position = getMaxSize()-size; else if(position < 0) this.position = 0; else this.position = position; } public void setSize(int size) { this.size = size; } }