private void installUI(LComponent comp) { comp.setUIRenderer(this.uiConfig.createUIFactory(comp.getUIName())); if (comp.isContainer()) { LComponent[] childs = ((LContainer) comp).getComponents(); for (int i = 0; i < childs.length; i++) { this.installUI(childs[i]); } } }
void setDesktop(LComponent comp) { if (comp.isContainer()) { LComponent[] child = ((LContainer) comp).getComponents(); for (int i = 0; i < child.length; i++) { this.setDesktop(child[i]); } } comp.setDesktop(this); }
/** * 查找指定容器 * * @param comp * @return */ boolean selectComponent(LComponent comp) { if (!comp.isVisible() || !comp.isFocusable() || !comp.isEnabled()) { return false; } // 清除最后部分 this.deselectComponent(); // 设定选中状态 comp.setSelected(true); this.selectedComponent = comp; return true; }
/** 鼠标运动事件 */ private void processMouseMotionEvent() { if ((this.hoverComponent != null && this.hoverComponent.isEnabled()) && (this.input.isMouseDown(MouseEvent.BUTTON1) || this.input.isMouseDown(MouseEvent.BUTTON2) || this.input.isMouseDown(MouseEvent.BUTTON3))) { if (this.input.getMouseDX() != 0 || this.input.getMouseDY() != 0) { this.hoverComponent.processMouseDragged(); } } else { // 获得当前窗体下鼠标坐标 LComponent comp = this.findComponent(this.input.getMouseX(), this.input.getMouseY()); if (comp != null) { if (this.input.getMouseDX() != 0 || this.input.getMouseDY() != 0) { comp.processMouseMoved(); // 刷新提示 this.tooltip.dismiss = 0; } if (this.hoverComponent == null) { this.tooltip.setToolTipComponent(comp); comp.processMouseEntered(); } else if (comp != this.hoverComponent) { this.tooltip.setToolTipComponent(comp); this.hoverComponent.processMouseExited(); comp.processMouseEntered(); } // 如果没有对应的悬停提示数据 } else { this.tooltip.setToolTipComponent(null); if (this.hoverComponent != null) { this.hoverComponent.processMouseExited(); } } // 设置组件悬停提示状态 this.hoverComponent = comp; } }
void setComponentStat(LComponent comp, boolean active) { if (this == Desktop.EMPTY_DESKTOP) { return; } if (active == false) { if (this.hoverComponent == comp) { this.processMouseMotionEvent(); } if (this.selectedComponent == comp) { this.deselectComponent(); } for (int i = 0; i < this.clickComponent.length; i++) { if (this.clickComponent[i] == comp) { this.clickComponent[i] = null; break; } } if (this.modal == comp) { this.modal = null; } } else { this.processMouseMotionEvent(); } if (comp.isContainer()) { LComponent[] components = ((LContainer) comp).getComponents(); int size = ((LContainer) comp).getComponentCount(); for (int i = 0; i < size; i++) { this.setComponentStat(components[i], active); } } }
public void setModal(LComponent comp) { if (comp != null && !comp.isVisible()) { throw new RuntimeException("Can't set invisible component as modal component!"); } this.modal = comp; }
@Override public void setSize(int x, int y) { super.setSize(x, y); bar.setLocation(bar.getWidth() / 2, 0); }
/** * 判断是否点中指定组件 * * @param component * @return */ public boolean onClick(LComponent component) { return component.isVisible() & (component.getCollisionBox().contains(mouseX, mouseY)); }