/******************************************************************************* * This is part of SketchChair, an open-source tool for designing your own furniture. * www.sketchchair.cc * * Copyright (C) 2012, Diatom Studio ltd. Contact: hello@diatom.cc * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. ******************************************************************************/ package ModalGUI; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseWheelEvent; import java.util.ArrayList; import java.util.List; import processing.core.PGraphics; public class GUIComponents extends GUIComponent { List l = new ArrayList(); public void add(GUIComponent component) { this.l.add(component); } public void clear() { for (int i = 0; i < this.l.size(); i++) { GUIComponent component = (GUIComponent) this.l.get(i); component.destroy(); this.l.remove(i); } this.l = new ArrayList(); } public GUIComponent get(int index) { return (GUIComponent) this.l.get(index); } public boolean hasFocus() { for (int i = 0; i < this.l.size(); i++) { GUIComponent component = (GUIComponent) this.l.get(i); if (component.hasFocus()) { return true; } } return false; } public void hideAll() { for (int i = 0; i < this.l.size(); i++) { GUIComponent component = (GUIComponent) this.l.get(i); component.hide(); } } public boolean isMouseOver() { for (int i = 0; i < this.l.size(); i++) { GUIComponent component = (GUIComponent) this.l.get(i); if (component.isMouseOver()) return true; } return false; } public void keyEvent(KeyEvent keyevent) { for (int i = 0; i < this.l.size(); i++) { GUIComponent component = (GUIComponent) this.l.get(i); component.keyEvent(keyevent); } } public void mouseEvent(MouseEvent e) { for (int i = 0; i < this.l.size(); i++) { GUIComponent component = (GUIComponent) this.l.get(i); component.mouseEvent(e); } } public void mouseWheelMoved(MouseWheelEvent e) { for (int i = 0; i < this.l.size(); i++) { GUIComponent component = (GUIComponent) this.l.get(i); component.mouseWheelMoved(e); } } public boolean overComponent() { for (int i = 0; i < this.l.size(); i++) { GUIComponent component = (GUIComponent) this.l.get(i); if (component.isMouseOver() && component.visible) return true; } return false; } public void render(PGraphics g) { for (int i = 0; i < this.l.size(); i++) { GUIComponent component = (GUIComponent) this.l.get(i); component.render(g); } for (int i = 0; i < this.l.size(); i++) { GUIComponent component = (GUIComponent) this.l.get(i); component.renderTop(g); } } @Override public void reRender(){ super.reRender(); for (int i = 0; i < this.l.size(); i++) { GUIComponent component = (GUIComponent) this.l.get(i); component.reRender(); } } public void render(PGraphics g, float x, float y, float w, float h) { for (int i = 0; i < this.l.size(); i++) { GUIComponent component = (GUIComponent) this.l.get(i); if (component.getX() >= x && component.getX() <= x + w && component.getY()+component.getHeight() >= y && component.getY() - component.getHeight() <= y + h) { component.visible = true; component.render(g); } else component.visible = false; } } public void reset() { this.clear(); } public void setController(ModalGUI controller) { for (int i = 0; i < this.l.size(); i++) { GUIComponent component = (GUIComponent) this.l.get(i); component.setController(controller); } } public void setPos(float newX, float newY) { for (int i = 0; i < this.l.size(); i++) { GUIComponent component = (GUIComponent) this.l.get(i); component.setPos(newX, newY); } } @Override public void setup() { // TODO Auto-generated method stub } public void showAll() { for (int i = 0; i < this.l.size(); i++) { GUIComponent component = (GUIComponent) this.l.get(i); component.show(); } } public int size() { return this.l.size(); } public boolean textfieldHasFocus() { for (int i = 0; i < this.l.size(); i++) { GUIComponent component = (GUIComponent) this.l.get(i); if (component instanceof GUITextfield) { GUITextfield field = (GUITextfield) component; if (field.isFocus()) return true; } } return false; } public void translate(float x, float y) { for (int i = 0; i < this.l.size(); i++) { GUIComponent component = (GUIComponent) this.l.get(i); component.setPos(component.getX() - component.parentPanel.getX() + x, component.getY() - component.parentPanel.getY() + y); } } public void update() { for (int i = 0; i < this.l.size(); i++) { GUIComponent component = (GUIComponent) this.l.get(i); if (component.destroy) this.l.remove(i); else component.update(); } } }