home *** CD-ROM | disk | FTP | other *** search
- package hhapplet;
-
- import XMLConsumer.IEntry;
- import java.awt.AWTEvent;
- import java.awt.Button;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.Panel;
- import java.awt.Rectangle;
- import java.awt.Scrollbar;
- import java.awt.event.AdjustmentEvent;
- import java.awt.event.AdjustmentListener;
- import java.awt.event.KeyEvent;
- import java.awt.event.MouseEvent;
- import java.awt.image.ImageObserver;
- import java.util.Vector;
-
- public abstract class ListView extends Panel implements Runnable, AdjustmentListener, IActionSink {
- private static final int HEIGHT_HORIZONTAL_SB = 16;
- private static final int WIDTH_VERTICAL_SB = 16;
- private Vector m_vToDo;
- private Scrollbar m_sbHorizontal = new Scrollbar(0);
- private Scrollbar m_sbVertical = new Scrollbar(1);
- private Button m_btnScrollerCorner;
- private int m_nHVisible;
- private int m_nVisible;
- private int m_nUHeight;
- private int m_nMouseX;
- private int m_nMouseY;
- private IEntry m_HighLightedEntry;
- private IEntry m_SelectedEntry;
- private int m_nHighLightedPos;
- private int m_nSelectedPos;
- private Image m_bgImage;
- private int m_nbgWidth;
- private int m_nbgHeight;
- private Image m_cachebgImage;
- private int m_nOldWidth;
- private int m_nOldHeight;
- private boolean m_bBgUpdated;
- private Image m_imgbackground;
-
- protected void procResize() {
- this.doLayout();
- }
-
- public Image getBackgroundImage() {
- if (this.m_nbgWidth > 0 && this.m_nbgHeight > 0 && this.m_bgImage != null) {
- Rectangle var1 = ((Component)this).getBounds();
- if (var1.height == this.m_nOldHeight && var1.width == this.m_nOldWidth && !this.m_bBgUpdated) {
- return this.m_cachebgImage;
- } else {
- this.m_nOldWidth = var1.width;
- this.m_nOldHeight = var1.height;
- this.m_cachebgImage = ((Component)this).createImage(var1.width, var1.height);
- Graphics var2 = this.m_cachebgImage.getGraphics();
- this.drawBackGround(var2);
- return this.m_cachebgImage;
- }
- } else {
- return null;
- }
- }
-
- protected abstract void listPaint(Graphics var1, Image var2);
-
- public void clearHightLighted() {
- if (this.m_HighLightedEntry != null) {
- this.m_HighLightedEntry.highLight(false);
- }
-
- this.m_HighLightedEntry = null;
- }
-
- protected void processEvent(AWTEvent var1) {
- if (var1.getID() != 101 && var1.getID() != 102) {
- if (var1.getID() == 500) {
- this.m_nMouseX = ((MouseEvent)var1).getX();
- this.m_nMouseY = ((MouseEvent)var1).getY();
- this.procClicked();
- } else if (var1.getID() == 503) {
- this.m_nMouseX = ((MouseEvent)var1).getX();
- this.m_nMouseY = ((MouseEvent)var1).getY();
- this.procMoved();
- } else {
- if (var1.getID() == 1004) {
- if (this.m_SelectedEntry == null) {
- int var2 = this.getTop();
- IEntry var3 = this.getEntryByPos(var2);
- if (var3 != null) {
- this.selectEntry(var2, var2, var3);
- return;
- }
- }
- } else if (var1.getID() == 401) {
- if (this.m_SelectedEntry == null) {
- return;
- }
-
- switch (((KeyEvent)var1).getKeyCode()) {
- case 10:
- if (this.m_SelectedEntry != null) {
- this.m_SelectedEntry.action(this);
- return;
- }
- break;
- case 33:
- int var12 = this.getTop();
- if (this.m_nSelectedPos != var12) {
- IEntry var22 = this.getEntryByPos(var12);
- this.selectEntry(var12, var12, var22);
- return;
- }
-
- var12 = var12 - this.getVisible() + 1;
- if (var12 < 0) {
- var12 = 0;
- }
-
- IEntry var21 = this.getEntryByPos(var12);
- this.setTop(var12);
- this.selectEntry(var12, var12, var21);
- return;
- case 34:
- int var10 = this.getTop();
- int var19 = var10 + this.getVisible() - 2;
- int var25 = this.getVerticalMax() - 1;
- if (var19 > var25) {
- var19 = var25;
- }
-
- if (this.m_nSelectedPos != var19) {
- IEntry var28 = this.getEntryByPos(var19);
- this.selectEntry(var10, var19, var28);
- return;
- }
-
- var10 = var10 + this.getVisible() - 1;
- if (var10 > var25 - this.getVisible() + 2) {
- var10 = var25 - this.getVisible() + 2;
- }
-
- if (var10 > 0) {
- var19 = var10 + this.getVisible() - 2;
- IEntry var27 = this.getEntryByPos(var19);
- this.setTop(var10);
- this.selectEntry(var10, var19, var27);
- return;
- }
- break;
- case 35:
- int var9 = this.getVerticalMax() - 1;
- IEntry var18 = this.getEntryByPos(var9);
- if (var18 != null) {
- int var24 = var9 - this.getVisible() + 2;
- if (var24 > 0) {
- this.setTop(var24);
- this.selectEntry(var24, var9, var18);
- return;
- }
-
- this.setTop(0);
- this.selectEntry(0, var9, var18);
- return;
- }
- break;
- case 36:
- IEntry var8 = this.getEntryByPos(0);
- if (var8 != null) {
- this.setTop(0);
- this.selectEntry(0, 0, var8);
- return;
- }
- break;
- case 38:
- int var7 = this.getTop();
- int var16 = this.m_nSelectedPos;
- byte var23 = 0;
- if (var16 > var23) {
- --var16;
- IEntry var26 = this.getEntryByPos(var16);
- if (var26 != null) {
- if (var16 < var7 || var16 > var7 + this.getVisible() - 2) {
- var7 = var16;
- this.setTop(var16);
- }
-
- this.selectEntry(var7, var16, var26);
- return;
- }
- }
- break;
- case 40:
- int var6 = this.getTop();
- int var14 = this.m_nSelectedPos;
- int var4 = this.getVerticalMax() - 1;
- if (var14 < var4) {
- ++var14;
- IEntry var5 = this.getEntryByPos(var14);
- if (var5 != null) {
- if (var14 < var6 || var14 > var6 + this.getVisible() - 2) {
- var6 = var14 - this.getVisible() + 2;
- this.setTop(var6);
- }
-
- this.selectEntry(var6, var14, var5);
- return;
- }
- }
- }
- }
-
- }
- } else {
- this.procResize();
- }
- }
-
- protected void selectEntry(int var1, int var2, IEntry var3) {
- Graphics var4 = ((Component)this).getGraphics();
- this.translate(var4);
- if (this.m_SelectedEntry != null) {
- this.m_SelectedEntry.select(false);
- if (var4 != null && this.m_nSelectedPos - var1 >= 0) {
- this.m_SelectedEntry.display(var4, this.m_nSelectedPos - var1, this.m_nUHeight, ((Component)this).getBackground(), this.m_imgbackground);
- }
- }
-
- if (var3 != null) {
- var3.select(true);
- if (var4 != null) {
- ((Component)this).getFontMetrics(var4.getFont());
- var3.display(var4, var2 - var1, this.m_nUHeight, ((Component)this).getBackground(), this.m_imgbackground);
- }
- }
-
- this.m_nSelectedPos = var2;
- this.m_SelectedEntry = var3;
- this.selectedEntry(this.m_SelectedEntry);
- }
-
- public int getHorizontalPos() {
- return this.m_sbHorizontal.getValue();
- }
-
- public abstract void accept(Vector var1);
-
- public void setBgImage(Image var1) {
- this.m_bgImage = var1;
- this.m_nbgHeight = this.m_bgImage.getHeight(this);
- this.m_nbgWidth = this.m_bgImage.getWidth(this);
- }
-
- public void dispatchToDo(String var1) {
- if (var1 == "repaint") {
- ((Component)this).repaint();
- }
-
- }
-
- public void update(Graphics var1) {
- this.paint(var1);
- }
-
- public void drawBackGround(Graphics var1) {
- if (this.m_nbgWidth > 0 && this.m_nbgHeight > 0 && this.m_bgImage != null) {
- Rectangle var5 = ((Component)this).getBounds();
-
- for(int var6 = 0; var6 <= (var5.width - 1) / this.m_nbgWidth; ++var6) {
- for(int var7 = 0; var7 <= (var5.height - 1) / this.m_nbgHeight; ++var7) {
- if (!var1.drawImage(this.m_bgImage, var6 * this.m_nbgWidth, var7 * this.m_nbgHeight, this.m_nbgWidth, this.m_nbgHeight, (ImageObserver)null)) {
- this.setTimeout("repaint", 100);
- return;
- }
- }
- }
-
- if (this.m_bBgUpdated) {
- this.m_bBgUpdated = false;
- return;
- }
- } else {
- Color var2 = var1.getColor();
- Color var3 = ((Component)this).getBackground();
- var1.setColor(var3);
- Rectangle var4 = ((Component)this).getBounds();
- var1.fillRect(0, 0, var4.width, var4.height);
- var1.setColor(var2);
- }
-
- }
-
- public boolean imageUpdate(Image var1, int var2, int var3, int var4, int var5, int var6) {
- if (var1 == this.m_bgImage) {
- this.m_nbgWidth = var5;
- this.m_nbgHeight = var6;
- this.m_bBgUpdated = true;
- ((Component)this).repaint();
- return false;
- } else {
- return true;
- }
- }
-
- public void active() {
- if (this.m_SelectedEntry != null) {
- this.m_SelectedEntry.action(this);
- }
-
- }
-
- public void setHorizontalMax(int var1) {
- var1 += 16;
- if (var1 <= this.m_nHVisible) {
- int var2 = this.m_sbHorizontal.getValue();
- this.m_sbHorizontal.setValues(var2, this.m_nHVisible - 1, 0, var1);
- if (!this.m_sbVertical.isVisible()) {
- this.m_btnScrollerCorner.setVisible(false);
- }
-
- this.m_sbHorizontal.setVisible(false);
- if (var2 != this.m_sbHorizontal.getValue()) {
- ((Component)this).repaint();
- return;
- }
- } else {
- this.m_sbHorizontal.setValues(this.m_sbHorizontal.getValue(), this.m_nHVisible - 1, 0, var1);
- if (!this.m_sbVertical.isVisible()) {
- this.m_btnScrollerCorner.setVisible(true);
- }
-
- this.m_sbHorizontal.setVisible(true);
- }
-
- }
-
- public int getUnitHeight() {
- return this.m_nUHeight;
- }
-
- public void setUnitHeight(int var1) {
- if (var1 > 0) {
- this.m_nUHeight = var1;
- this.m_sbHorizontal.setUnitIncrement(this.m_nUHeight);
- }
-
- }
-
- private void translateBack(Graphics var1) {
- int var2 = this.getHorizontalPos();
- var1.translate(var2 - 4, -2);
- }
-
- public final void setTimeout(String var1, int var2) {
- ToDo var3 = new ToDo(this, var1, var2);
- synchronized(this.m_vToDo){}
-
- try {
- this.m_vToDo.addElement(var3);
- } catch (Throwable var8) {
- throw var8;
- }
-
- Thread var4 = new Thread(this);
- var4.start();
- }
-
- public void doLayout() {
- this.m_sbVertical.setBounds(((Component)this).getBounds().width - 16, 0, 16, ((Component)this).getBounds().height - 16);
- this.m_sbHorizontal.setBounds(0, ((Component)this).getBounds().height - 16, ((Component)this).getBounds().width - 16, 16);
- this.m_btnScrollerCorner.setBounds(((Component)this).getBounds().width - 16, ((Component)this).getBounds().height - 16, 16, 16);
- this.m_nVisible = ((Component)this).getBounds().height / this.m_nUHeight;
- if (this.m_sbVertical.getBlockIncrement() != this.m_nVisible - 1 && this.m_nVisible - 1 > 0) {
- this.m_sbVertical.setBlockIncrement(this.m_nVisible - 1);
- }
-
- if (this.m_sbVertical.getVisibleAmount() != this.m_nVisible - 1) {
- this.m_sbVertical.setVisibleAmount(this.m_nVisible - 1);
- if (this.m_sbVertical.getMaximum() < this.m_nVisible) {
- if (!this.m_sbHorizontal.isVisible()) {
- this.m_btnScrollerCorner.setVisible(false);
- }
-
- this.m_sbVertical.setVisible(false);
- } else {
- if (!this.m_sbHorizontal.isVisible()) {
- this.m_btnScrollerCorner.setVisible(true);
- }
-
- this.m_sbVertical.setVisible(true);
- }
- }
-
- this.m_nHVisible = ((Component)this).getBounds().width;
- if (this.m_sbHorizontal.getBlockIncrement() != this.m_nHVisible - 1 && this.m_nHVisible - 1 > 0) {
- this.m_sbHorizontal.setBlockIncrement(this.m_nHVisible - 1);
- }
-
- if (this.m_sbHorizontal.getVisibleAmount() != this.m_nHVisible - 1) {
- this.m_sbHorizontal.setVisibleAmount(this.m_nHVisible - 1);
- if (this.m_sbHorizontal.getMaximum() < this.m_nHVisible) {
- if (!this.m_sbVertical.isVisible()) {
- this.m_btnScrollerCorner.setVisible(false);
- }
-
- this.m_sbHorizontal.setVisible(false);
- return;
- }
-
- if (!this.m_sbVertical.isVisible()) {
- this.m_btnScrollerCorner.setVisible(true);
- }
-
- this.m_sbHorizontal.setVisible(true);
- }
-
- }
-
- protected void selectedEntry(IEntry var1) {
- }
-
- public boolean isFocusTraversable() {
- return true;
- }
-
- public void adjustmentValueChanged(AdjustmentEvent var1) {
- if (((AWTEvent)var1).getID() == 601) {
- this.procScroll();
- }
-
- }
-
- protected void procClicked() {
- if (this.m_nUHeight != 0) {
- int var1 = this.m_sbVertical.getValue();
- int var2 = this.m_nMouseY / this.m_nUHeight;
- int var3 = var1 + var2;
- IEntry var4 = this.getEntryByPos(var3);
- if (var4 != this.m_SelectedEntry) {
- this.selectEntry(var1, var3, var4);
- }
-
- if (var4 != null) {
- var4.action(this);
- }
- }
-
- }
-
- public ListView() {
- this.m_sbHorizontal.setBackground(new Color(192, 192, 192));
- ((Container)this).add(this.m_sbHorizontal);
- this.m_sbVertical.setBackground(new Color(192, 192, 192));
- ((Container)this).add(this.m_sbVertical);
- this.m_btnScrollerCorner = new Button();
- this.m_btnScrollerCorner.setEnabled(false);
- ((Container)this).add(this.m_btnScrollerCorner);
- ((Component)this).enableEvents(61L);
- this.m_sbVertical.addAdjustmentListener(this);
- this.m_sbHorizontal.addAdjustmentListener(this);
- this.m_nVisible = 0;
- this.m_nHVisible = 0;
- this.m_vToDo = new Vector();
- this.setUnitHeight(16);
- this.m_nbgWidth = -1;
- this.m_nbgHeight = -1;
- this.m_bgImage = null;
- }
-
- protected void procMoved() {
- if (this.m_nUHeight != 0) {
- int var1 = this.m_sbVertical.getValue();
- int var2 = this.m_nMouseY / this.m_nUHeight;
- int var3 = var1 + var2;
- IEntry var4 = this.getEntryByPos(var3);
- if (var4 != this.m_HighLightedEntry) {
- this.highLightEntry(var1, var3, var4);
- }
- }
-
- }
-
- private void translate(Graphics var1) {
- int var2 = this.getHorizontalPos();
- var1.translate(-var2 + 4, 2);
- }
-
- public void paint(Graphics var1) {
- Rectangle var2 = ((Component)this).getBounds();
- if (this.m_sbVertical.isVisible()) {
- var2.width -= 16;
- }
-
- Image var3 = ((Component)this).createImage(var2.width, var2.height);
- Graphics var4 = var3.getGraphics();
- this.m_imgbackground = this.getBackgroundImage();
- if (this.m_imgbackground != null) {
- var4.drawImage(this.m_imgbackground, 0, 0, this);
- }
-
- this.translate(var4);
- this.listPaint(var4, this.m_imgbackground);
- this.translateBack(var4);
- this.paintBorder(var4, var2);
- var1.drawImage(var3, 0, 0, this);
- }
-
- public int getVisible() {
- return this.m_nVisible;
- }
-
- public int getTop() {
- return this.m_sbVertical.getValue();
- }
-
- public void setTop(int var1) {
- this.m_sbVertical.setValue(var1);
- this.procScroll();
- }
-
- protected abstract IEntry getEntryByPos(int var1);
-
- protected void highLightEntry(int var1, int var2, IEntry var3) {
- Graphics var4 = ((Component)this).getGraphics();
- this.translate(var4);
- if (this.m_HighLightedEntry != null) {
- this.m_HighLightedEntry.highLight(false);
- if (var4 != null) {
- this.m_HighLightedEntry.display(var4, this.m_nHighLightedPos - var1, this.m_nUHeight, ((Component)this).getBackground(), this.m_imgbackground);
- }
- }
-
- if (var3 != null) {
- var3.highLight(true);
- if (var4 != null) {
- var3.display(var4, var2 - var1, this.m_nUHeight, ((Component)this).getBackground(), this.m_imgbackground);
- }
- }
-
- this.m_HighLightedEntry = var3;
- this.m_nHighLightedPos = var2;
- }
-
- public void setVerticalMax(int var1) {
- this.m_sbVertical.setValues(this.m_sbVertical.getValue(), this.m_nVisible - 1, 0, var1);
- if (var1 <= this.m_nVisible) {
- if (!this.m_sbHorizontal.isVisible()) {
- this.m_btnScrollerCorner.setVisible(false);
- }
-
- this.m_sbVertical.setVisible(false);
- } else {
- if (!this.m_sbHorizontal.isVisible()) {
- this.m_btnScrollerCorner.setVisible(true);
- }
-
- this.m_sbVertical.setVisible(true);
- }
- }
-
- public int getVerticalMax() {
- return this.m_sbVertical.getMaximum();
- }
-
- protected void paintBorder(Graphics var1, Rectangle var2) {
- Color var3 = var1.getColor();
- Color var4 = ((Component)this).getBackground();
- Color var5 = var4.darker();
- Color var6 = var5.darker();
- Color var7 = var6.darker();
- var1.setColor(var6);
- var1.drawLine(0, 0, var2.width - 1, 0);
- var1.drawLine(0, 0, 0, var2.height - 1);
- var1.setColor(var7);
- var1.drawLine(1, 1, var2.width - 2, 1);
- var1.drawLine(1, 1, 1, var2.height - 2);
- var1.setColor(var5);
- var1.drawLine(var2.width - 2, 1, var2.width - 2, var2.height - 2);
- var1.drawLine(1, var2.height - 2, var2.width - 2, var2.height - 2);
- var1.setColor(var4);
- var1.drawLine(var2.width - 1, 1, var2.width - 1, var2.height - 1);
- var1.drawLine(0, var2.height - 1, var2.width - 1, var2.height - 1);
- var1.setColor(var3);
- }
-
- protected void procScroll() {
- ((Component)this).repaint();
- }
-
- public Dimension getPreferredSize() {
- return ((Component)this).getParent().getSize();
- }
-
- public void run() {
- synchronized(this.m_vToDo){}
-
- ToDo var1;
- try {
- var1 = (ToDo)this.m_vToDo.elementAt(0);
- this.m_vToDo.removeElementAt(0);
- } catch (Throwable var8) {
- throw var8;
- }
-
- try {
- Thread.sleep((long)var1.m_nMSec);
- this.dispatchToDo(var1.m_sToDo);
- } catch (InterruptedException var7) {
- ((Throwable)var7).printStackTrace();
- }
- }
-
- public void clearSelected() {
- if (this.m_SelectedEntry != null) {
- this.m_SelectedEntry.select(false);
- }
-
- this.m_SelectedEntry = null;
- this.selectedEntry(this.m_SelectedEntry);
- }
- }
-