dropbutton.java
来自「一个简单的visio程序。」· Java 代码 · 共 297 行
JAVA
297 行
package webide.views.prop;
import java.awt.Color;
import java.awt.Window;
import java.awt.TextArea;
import java.awt.Component;
import java.beans.PropertyEditor;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import hc.util.MsgBox;
import webide.MainConsole;
import Editor.*;
public class DropButton extends java.awt.Canvas
implements MouseListener, MouseMotionListener,
FocusListener
{
/*--- Private Data Members ----------------------------------------------------------------*/
private webide.views.prop.PropSheet Propersheet;
private webide.views.prop.PropPanel proppanel;
private PropertyEditor editor;
private Window win;
private PropColorWindow yc = null;
private Component body;
private int buttonadd = 2;
private int test = 0;
private long begintime ;
private boolean nowDropDown = false;
/* Constructor */
public DropButton(webide.views.prop.PropPanel proppanel, PropertyEditor pe)
{
this.proppanel = proppanel;
this.Propersheet = this.proppanel.propsheet;
this.editor = pe;
yc = new PropColorWindow(editor, 0, 0);
this.win = yc.getWindow();
this.body = pe.getCustomEditor();
setBackground(Color.lightGray);
setForeground(Color.black);
addMouseListener(this);
addMouseMotionListener(this);
this.win.addFocusListener(this);
if( (editor instanceof VBListEditor || editor instanceof ItemListEditor
|| editor instanceof ListEditor) )
{
((java.awt.TextArea)editor).addFocusListener(this);
}
this.editor.addPropertyChangeListener(new PropAdaptor(MainConsole.getCurrentFocus(), editor));
}
/*-----------------------------------------------------------------------------------------*/
/*--- Paint Method ------------------------------------------------------------------------*/
public void update(java.awt.Graphics g)
{
paint(g);
}
public void paint(java.awt.Graphics g)
{
draw(g);
}
public void draw(java.awt.Graphics g)
{
drawArrow(g, getSize().width, getSize().height);
drawupbutton();
}
/*-----------------------------------------------------------------------------------------*/
/*--- Private Method ----------------------------------------------------------------------*/
private void drawArrow(java.awt.Graphics g, int width, int height)
{
int w=6;
int h=4;
int left0 = (width-w-1)/2;
int top0 = (height-h)/2;
g.setColor(Color.black);
for (int i = 0; i < h; i++)
{
g.drawLine(left0+i,top0+i,left0+w-i,top0+i);
}
}
private void drawButton(java.awt.Graphics g,Color c1,Color c2,Color c3,Color c4,int x, int y, int width, int height)
{
g.setColor(c1);
g.drawLine(x,y,x+width,y);
g.drawLine(x,y,x,y+height);
g.setColor(c2);
g.drawLine(x+1,y+1,x+width-1,y+1);
g.drawLine(x+1,y+1,x+1,y+height-1);
g.setColor(c3);
g.drawLine(x+width-1,y+height-1,x+1,y+height-1);
g.drawLine(x+width-1,y+height-1,x+width-1,y+1);
g.setColor(c4);
g.drawLine(x+width,y+height,x,y+height);
g.drawLine(x+width,y+height,x+width,y);
}
private void drawupbutton()
{
java.awt.Graphics g = getGraphics();
if(g != null)
drawButton(g, Color.lightGray, Color.white, Color.gray, Color.black, 0,0,getSize().width-1,getSize().height-1);
g.dispose();
}
private void drawdownbutton()
{
java.awt.Graphics g = getGraphics();
if(g != null)
drawButton(g, Color.black, Color.gray, new Color(224,224,224), Color.white, 0,0,getSize().width-1,getSize().height-1);
g.dispose();
}
public boolean getWinVisible()
{
return win.isVisible();
}
public void Dispose()
{
win.dispose();
}
public void newPropertyColorWindow()
{
int wid = this.proppanel.getEditWidth();
int butWidth = getSize().width;
int butHeight = getSize().height;
int winWidth = 0;
int winHeight = 0;
if(editor instanceof VBListEditor || editor instanceof ListEditor || editor instanceof ItemListEditor)
{
winWidth = wid;
winHeight = 120;
}
else
{
winWidth = 260;
winHeight = 70;
}
int x = getLocationOnScreen().x + butWidth - winWidth;
int y = getLocationOnScreen().y + butHeight;
if(editor instanceof VBListEditor)
{
((VBListEditor)editor).setSize(wid,120);
}
else if(editor instanceof ItemListEditor)
{
((ItemListEditor)editor).setSize(wid,120);
}
else if(editor instanceof ListEditor)
{
((ListEditor)editor).setSize(wid,120);
}
if(!win.isVisible())
{
if(editor instanceof VBListEditor || editor instanceof ListEditor || editor instanceof ItemListEditor)
{
win.setBounds(x, y, wid, 120);
win.pack();
win.show();
((TextArea)editor).requestFocus();
((TextArea)editor).setEnabled(true);
}
else
{
win.setBounds(x, y, 260, 70);
win.show();
win.requestFocus();
for(int i = 0;i<16;i++)
((ColorEditor)editor).label[48+i].setBackground(new Color(((ColorEditor)editor).colorAy[48+i]));
}
}
else if(win.isVisible())
{
System.out.println("setvisible false");
win.setVisible(false);
if(editor instanceof VBListEditor)
{
((VBListEditor)editor).changeValue();
}
else if(editor instanceof ListEditor)
{
((ListEditor)editor).changeValue();
}
else if(editor instanceof ItemListEditor)
{
((ItemListEditor)editor).changeValue();
}
}
}
/*--- Event -------------------------------------------------------------------------------*/
/*--- Mouse Listener ----------------------------------------------------------------------*/
public void mouseClicked(MouseEvent e)
{
// empty
}
public void mousePressed(MouseEvent e)
{
drawdownbutton();
long finishtime = e.getWhen();
if (finishtime - this.begintime <= 80)
{
this.nowDropDown = true;
}
int clickCount = e.getClickCount();
webide.Wrapper wrap = MainConsole.getCurrentFocus();
if( !this.nowDropDown)
newPropertyColorWindow();
else
this.nowDropDown = false;
}
public void mouseReleased(MouseEvent e)
{
drawupbutton();
}
public void mouseExited(MouseEvent e)
{
drawupbutton();
}
public void mouseEntered(MouseEvent e)
{
}
/*-----------------------------------------------------------------------------------------*/
/*--- Mouse Motion Listener ---------------------------------------------------------------*/
public void mouseMoved(MouseEvent e)
{
}
private boolean isInButton = false;
public void mouseDragged(MouseEvent e)
{
int x = e.getX();
int y = e.getY();
if(x > 0 && x < getSize().width && y > 0 && y < getSize().height)
{
if(!isInButton)
drawdownbutton() ;
isInButton = true;
}
else
{
if(isInButton)
drawupbutton() ;
isInButton = false;
}
}
/*-----------------------------------------------------------------------------------------*/
/*--- Focus Listener ----------------------------------------------------------------------*/
public void focusGained(FocusEvent e)
{
}
public void focusLost(FocusEvent e)
{
this.proppanel.repaint();
begintime = System.currentTimeMillis();
test ++;
if(test%2 == 0)
{
if(win.isVisible())
{
win.setVisible(false);
test = 0;
if(editor instanceof VBListEditor)
{
((VBListEditor)editor).changeValue();
}
else if(editor instanceof ListEditor)
{
((ListEditor)editor).changeValue();
}
else if(editor instanceof ItemListEditor)
{
((ItemListEditor)editor).changeValue();
}
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?