Horus Doc || Java GUI Reference || Doxygen's quick Index  

OutputElement Class Reference

Inheritance diagram for OutputElement::

MachineElement AnimatedMachine ConnectorMachine List of all members.

Public Methods

 OutputElement ()
void componentAdded (ContainerEvent e)
void componentRemoved (ContainerEvent e)
void paint (Graphics g)
void mouseClicked (MouseEvent e)
void mouseEntered (MouseEvent e)
void mouseExited (MouseEvent e)
void mousePressed (MouseEvent e)
void mouseReleased (MouseEvent e)
HxCorba.ImageRep computeResult ()
void keyPressed ()
void animationStep ()
boolean continueAnimation ()
void run ()
void lostOwnership (Clipboard clipboard, Transferable contents)

Protected Methods

void doInit ()

Constructor & Destructor Documentation

OutputElement::OutputElement   [inline]
 

00025 {
00026     int marginLF = 0;
00027     int marginUP = 0;
00028     int marginRG = KeyComponent.componentSize().width  / 2;
00029     int marginDW = 0;
00030     int machineW = 68;
00031     int machineH = 97;
00032 
00033     setSize(marginLF+machineW+marginRG, marginUP+machineH+marginDW);
00034     setMachineImage(Images.transport, marginLF, marginUP, machineW, machineH);
00035 
00036     _props = new OutProperties();
00037     _props.destination = "World";
00038 
00039     _inout = createOutputSocket(marginLF+15, marginUP + 32);
00040     setLayer(_inout, PROP_LAYER.intValue()); //on top of machineImage
00041 
00042     _destination = createPropertyComponent(_props, marginLF+5, marginUP + 74, 60);
00043     _key = createKeyComponent(marginLF+machineW-marginRG-2, marginUP);
00044 
00045     _direction = createPropertyComponent("", marginLF+10, marginUP+10, 48);
00046     _direction.addMouseListener(this);
00047     _direction.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
00048 
00049     _mode  = MODE_RECEIVE;
00050     _direction.setText("Receive");
00051 
00052     _conMgr = new ConnectorManager(this, _inout);
00053     _conMgr.setColor(Color.green.darker());
00054 
00055     _appMgr = null;
00056     _inout.setVisible(false);
00057     _key.setVisible(false);
00058     _direction.setVisible(false);
00059     _destination.setVisible(false);
00060 }


Member Function Documentation

void OutputElement::componentAdded ContainerEvent    e [inline]
 

00062 {}

void OutputElement::componentRemoved ContainerEvent    e [inline]
 

00065 {
00066     if(e.getChild() == this) _conMgr.freeConnector();
00067 }

void OutputElement::paint Graphics    g [inline]
 

00070 {
00071     super.paint(g);
00072 
00073     java.util.Random rand = new java.util.Random();
00074     g.setColor(Color.green);
00075 
00076     for(int i=0; i<_nStars; i++) {
00077         int x = 6 + rand.nextInt(55);
00078         int y = 28 + rand.nextInt(45);
00079         g.drawLine(x-2,y,x+2,y);
00080         g.drawLine(x,y-2,x,y+2);
00081     }
00082 }

void OutputElement::mouseClicked MouseEvent    e [inline]
 

00085 {
00086     do {
00087         _mode = (_mode + 1) % 5;
00088     }while(!modeAllowed(_mode));
00089 
00090     _inout.isInput((_mode == MODE_SEND) || (_mode == MODE_COPY));
00091     String [] modeStr = {"Receive", "Paste", "Connect", " Send", "Copy" };
00092     _direction.setText(modeStr[_mode]);
00093     repaint();
00094 }

void OutputElement::mouseEntered MouseEvent    e [inline]
 

00096 {}

void OutputElement::mouseExited MouseEvent    e [inline]
 

00097 {}

void OutputElement::mousePressed MouseEvent    e [inline]
 

00098 {}

void OutputElement::mouseReleased MouseEvent    e [inline]
 

00099 {}

HxCorba.ImageRep OutputElement::computeResult   [inline, virtual]
 

Reimplemented from ConnectorMachine.

00104 {
00105     if((_mode != MODE_RECEIVE) && ((_mode != MODE_PASTE))) return null;
00106 
00107     if(_mode == MODE_PASTE) {
00108         _working = true;
00109         _nStars = 0;
00110         _starsUp = false;
00111         new Thread(this).start();
00112     }
00113     else {
00114         _working = false;
00115         _nStars = 0;
00116         _starsUp = true;
00117     }
00118 
00119     _key.startAnimation();
00120     _key.joinAnimation();
00121 
00122     if(_inout.empty()) return null;
00123 
00124     HxCorba.ImageRep result = _inout.getImageRep();
00125     _inout.removeElement();
00126 
00127     return result;
00128 }

void OutputElement::keyPressed   [inline, virtual]
 

Reimplemented from AnimatedMachine.

00132 {
00133     if((_nStars > 0) || (_starsUp)) return; //already pressed
00134 
00135     if(_key.isTurned()) { //there is a connector
00136         _conMgr.freeConnector();
00137         _key.turnKey();
00138         return;
00139     }
00140 
00141     if(!_inout.empty() && (_mode == MODE_RECEIVE)) return;
00142     if(!_inout.empty() && (_mode == MODE_PASTE)) return;
00143     if(_inout.empty() && (_mode == MODE_SEND)) return;
00144     if(_inout.empty() && (_mode == MODE_COPY)) return;
00145 
00146     if(_inout.empty() && (_mode == MODE_CONNECT)) {
00147         _conMgr.createConnector("Output result");
00148         _key.turnKey();
00149         return;
00150     }
00151 
00152     if((_mode == MODE_COPY) || (_mode == MODE_PASTE)) {
00153         _working = true;
00154         _nStars = 0;
00155         _starsUp = false;
00156         new Thread(this).start();
00157     }
00158     else {
00159         _working = false;
00160         _nStars = 0;
00161         _starsUp = true;
00162     }
00163 
00164     _key.startAnimation();
00165 }

void OutputElement::animationStep   [inline, virtual]
 

Reimplemented from AnimatedMachine.

00169 {
00170     if(_starsUp) {
00171         _nStars += 5;
00172         if(_nStars >= 15) {
00173             _working = true;
00174             _starsUp = false;
00175             new Thread(this).start();
00176         }
00177     }
00178     else
00179         if(!_working) _nStars -= 5;
00180 
00181     repaint();
00182 }

boolean OutputElement::continueAnimation   [inline, virtual]
 

Reimplemented from AnimatedMachine.

00186 {
00187     return (_working || (_nStars > 0));
00188 }

void OutputElement::run   [inline]
 

00191 {
00192     try {
00193         if(_mode == MODE_COPY) doCopy();
00194         else if(_mode == MODE_PASTE) doPaste();
00195         else if(_mode == MODE_SEND) doSend();
00196         else if(_mode == MODE_RECEIVE) doReceive();
00197 
00198     }catch(Exception err){
00199         ErrorStreamArea.println("Error! "+err+"\n");
00200         err.printStackTrace();
00201     }
00202 
00203     _working = false;
00204 }

void OutputElement::lostOwnership Clipboard    clipboard,
Transferable    contents
[inline]
 

00207 {}

void OutputElement::doInit   [inline, protected]
 

Reimplemented from MachineElement.

00216 {
00217     _appMgr = ApplicationsManager.defaultAppMgr();
00218     if(_appMgr != null)
00219         _destination.setVisible(true);
00220     else {
00221         _mode = MODE_PASTE; // only Copy&Paste allowed
00222         _direction.setText("Paste");
00223         //turnOff("NameService can not be found");
00224     }
00225 
00226     _inout.setVisible(true);
00227     _key.setVisible(true);
00228     _direction.setVisible(true);
00229     repaint();
00230 }


The documentation for this class was generated from the following file:
Generated on Mon Jan 27 15:11:24 2003 for JavaReference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001