23 package com.realtime.crossfire.jxclient.gui.gui;
31 import java.awt.Component;
32 import java.awt.Container;
33 import java.awt.Dimension;
34 import java.awt.event.KeyEvent;
35 import java.util.Collection;
36 import java.util.EnumSet;
37 import javax.swing.JComponent;
38 import javax.swing.JFrame;
39 import org.jetbrains.annotations.NotNull;
40 import org.jetbrains.annotations.Nullable;
55 private final JComponent
component =
new JComponent() {
60 private static final long serialVersionUID = 1L;
221 final int count =
component.getComponentCount();
222 for (
int i = 0; i < count; i++) {
223 final Component
component = this.component.getComponent(i);
240 if (defaultElement !=
null) {
255 final int count =
component.getComponentCount();
256 for (
int i = 0; i < count; i++) {
257 final Component
component = this.component.getComponent(i);
260 if (class_.isAssignableFrom(element.getClass()) && element.
getName().endsWith(ending)) {
261 return class_.cast(element);
279 final int count =
component.getComponentCount();
280 for (
int i = 0; i < count; i++) {
281 final Component
component = this.component.getComponent(i);
284 if (class_.isAssignableFrom(element.getClass()) && !element.
getName().endsWith(ending)) {
285 return class_.cast(element);
301 final int count =
component.getComponentCount();
302 for (
int i = 0; i < count; i++) {
303 final Component
component = this.component.getComponent(i);
306 if (class_.isAssignableFrom(element.getClass())) {
307 return class_.cast(element);
324 Component
component = this.component.findComponentAt(x, y);
351 if (previousActiveElement !=
null) {
354 assert this.activeElement !=
null;
355 this.activeElement.activeChanged();
363 this.activeElement =
null;
364 assert previousActiveElement !=
null;
382 return this.activeElement !=
null && this.activeElement ==
activeElement;
406 switch (e.getKeyCode()) {
407 case KeyEvent.VK_ENTER:
408 case KeyEvent.VK_SPACE:
410 if (defaultElement !=
null) {
416 case KeyEvent.VK_TAB:
446 if (!textArea.
getName().equals(
"command")) {
464 public <T extends GUIElement> T
getFirstElement(@NotNull
final Class<T> class_, @NotNull
final String name) {
465 final int count =
component.getComponentCount();
466 for (
int i = 0; i < count; i++) {
467 final Component
component = this.component.getComponent(i);
470 if (class_.isAssignableFrom(element.getClass()) && element.
getName().equals(name)) {
471 return class_.cast(element);
536 return (name ==
null ?
"" : name)+
"["+
component.getWidth()+
"x"+
component.getHeight()+
"]";
545 public void autoSize(
final int screenWidth,
final int screenHeight) {
548 if (extent !=
null) {
549 final Dimension preferredSize =
component.getPreferredSize();
550 final int x = extent.
getX(screenWidth, screenHeight, preferredSize.width, preferredSize.height);
551 final int y = extent.
getY(screenWidth, screenHeight, preferredSize.width, preferredSize.height);
552 final int w = extent.
getW(screenWidth, screenHeight, preferredSize.width, preferredSize.height);
553 final int h = extent.
getH(screenWidth, screenHeight, preferredSize.width, preferredSize.height);
569 final Dimension preferredSize =
component.getPreferredSize();
572 x = screenWidth/2-preferredSize.width;
574 x =
defaultX.
evaluate(screenWidth, screenHeight, preferredSize.width, preferredSize.height)-preferredSize.width/2;
578 y = screenHeight/2-preferredSize.height;
580 y =
defaultY.
evaluate(screenWidth, screenHeight, preferredSize.width, preferredSize.height)-preferredSize.height/2;
582 w = preferredSize.width;
583 h = preferredSize.height;
585 setBounds(x, y, w, h, screenWidth, screenHeight);
622 final int count =
component.getComponentCount();
623 for (
int i = 0; i < count; i++) {
624 final Component
component = this.component.getComponent(i);
662 public void setBounds(
final int x,
final int y,
final int width,
final int height,
final int windowWidth,
final int windowHeight) {
663 int newWidth = width;
664 int newHeight = height;
665 final Dimension maximumSize =
component.getMaximumSize();
666 if (maximumSize !=
null) {
667 if (newWidth > maximumSize.width) {
668 newWidth = maximumSize.width;
670 if (newHeight > maximumSize.height) {
671 newHeight = maximumSize.height;
674 final Dimension minimumSize =
component.getMinimumSize();
675 if (minimumSize !=
null) {
676 if (newWidth < minimumSize.width) {
677 newWidth = minimumSize.width;
679 if (newHeight < minimumSize.height) {
680 newHeight = minimumSize.height;
683 final int newX = Math.max(Math.min(x, windowWidth-newWidth), 0);
684 final int newY = Math.max(Math.min(y, windowHeight-newHeight), 0);
685 component.setBounds(newX, newY, newWidth, newHeight);
697 if (c instanceof JFrame) {
716 final int count =
component.getComponentCount();
717 for (
int i = 0; i < count; i++) {
718 final Component
component = this.component.getComponent(i);
732 final int count =
component.getComponentCount();
733 for (
int i = 0; i < count; i++) {
734 final Component
component = this.component.getComponent(i);
738 ((
GUIMessageLog)element).setShowSentCommands(showSentCommands);
749 final int count =
component.getComponentCount();
750 for (
int i = 0; i < count; i++) {
751 final Component
component = this.component.getComponent(i);