parent
52f2419a3d
commit
93e062ad42
Binary file not shown.
@ -0,0 +1,222 @@ |
|||||||
|
package sig.modules.Controller; |
||||||
|
|
||||||
|
import java.awt.Color; |
||||||
|
import java.awt.Graphics; |
||||||
|
import java.awt.geom.Rectangle2D; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import net.java.games.input.Component; |
||||||
|
import net.java.games.input.Controller; |
||||||
|
import net.java.games.input.Component.Identifier; |
||||||
|
import sig.sigIRC; |
||||||
|
import sig.modules.ControllerModule; |
||||||
|
|
||||||
|
public class Axis { |
||||||
|
List<Identifier> identifiers = new ArrayList<Identifier>(); |
||||||
|
boolean twoWayAxis = false; //True = 4-way, False = 2-way
|
||||||
|
Color backgroundColor=Color.BLACK,indicatorColor=Color.WHITE; |
||||||
|
double pct_x = 0; |
||||||
|
double pct_y = 0; |
||||||
|
double pct_width = 0; |
||||||
|
double pct_height = 0; |
||||||
|
Controller parent_controller; |
||||||
|
ControllerModule parent; |
||||||
|
double range1,range2; //Range of motion.
|
||||||
|
int orientation; //0=Left-to-Right, 1=Right-to-Left, 2=Bottom-to-Top, 3=Top-to-Bottom
|
||||||
|
boolean visible=false; |
||||||
|
|
||||||
|
/** |
||||||
|
* 4-way axis Constructor. |
||||||
|
*/ |
||||||
|
public Axis(Rectangle2D.Double rect, |
||||||
|
Controller parent_controller, |
||||||
|
Identifier identifier, |
||||||
|
Identifier identifier2, |
||||||
|
Color background_color, |
||||||
|
Color indicator_color, |
||||||
|
ControllerModule module) { |
||||||
|
this.twoWayAxis=false; |
||||||
|
this.pct_x = rect.getX(); |
||||||
|
this.pct_y = rect.getY(); |
||||||
|
this.pct_width=rect.getWidth(); |
||||||
|
this.pct_height=rect.getHeight(); |
||||||
|
if (identifier!=null) { |
||||||
|
identifiers.add(identifier); |
||||||
|
} |
||||||
|
if (identifier2!=null) { |
||||||
|
identifiers.add(identifier2); |
||||||
|
} |
||||||
|
this.parent_controller = parent_controller; |
||||||
|
this.parent = module; |
||||||
|
this.backgroundColor = background_color; |
||||||
|
this.indicatorColor = indicator_color; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 2-way axis Constructor. |
||||||
|
*/ |
||||||
|
public Axis(Rectangle2D.Double rect, |
||||||
|
Controller parent_controller, |
||||||
|
Identifier identifier, |
||||||
|
double starting_range, |
||||||
|
double ending_range, |
||||||
|
int orientation, |
||||||
|
Color background_color, |
||||||
|
Color indicator_color, |
||||||
|
ControllerModule module) { |
||||||
|
this.twoWayAxis=true; |
||||||
|
this.pct_x = rect.getX(); |
||||||
|
this.pct_y = rect.getY(); |
||||||
|
this.pct_width=rect.getWidth(); |
||||||
|
this.pct_height=rect.getHeight(); |
||||||
|
if (identifier!=null) { |
||||||
|
identifiers.add(identifier); |
||||||
|
} |
||||||
|
this.parent_controller = parent_controller; |
||||||
|
this.parent = module; |
||||||
|
this.range1 = starting_range; |
||||||
|
this.range2 = ending_range; |
||||||
|
this.orientation = orientation; |
||||||
|
this.backgroundColor = background_color; |
||||||
|
this.indicatorColor = indicator_color; |
||||||
|
} |
||||||
|
|
||||||
|
public void draw(Graphics g) { |
||||||
|
if (visible) { |
||||||
|
GetAxisDisplay(g,this, |
||||||
|
parent.getPosition().getX()+pct_x*parent.getControllerImage().getWidth(sigIRC.panel), |
||||||
|
parent.getPosition().getY()+pct_y*parent.getControllerImage().getHeight(sigIRC.panel), |
||||||
|
pct_width*parent.getControllerImage().getWidth(sigIRC.panel), |
||||||
|
pct_height*parent.getControllerImage().getHeight(sigIRC.panel)); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public void setupBoundsRectangle(Rectangle2D.Double rect) { |
||||||
|
this.pct_x = rect.getX(); |
||||||
|
this.pct_y = rect.getY(); |
||||||
|
this.pct_width=rect.getWidth(); |
||||||
|
this.pct_height=rect.getHeight(); |
||||||
|
} |
||||||
|
|
||||||
|
public boolean isTwoWayAxis() { |
||||||
|
return twoWayAxis; |
||||||
|
} |
||||||
|
|
||||||
|
public Color getBackgroundColor() { |
||||||
|
return backgroundColor; |
||||||
|
} |
||||||
|
|
||||||
|
public List<Identifier> getIdentifiers() { |
||||||
|
return identifiers; |
||||||
|
} |
||||||
|
|
||||||
|
public Color getIndicatorColor() { |
||||||
|
return indicatorColor; |
||||||
|
} |
||||||
|
|
||||||
|
public double getPctX() { |
||||||
|
return pct_x; |
||||||
|
} |
||||||
|
|
||||||
|
public double getPctY() { |
||||||
|
return pct_y; |
||||||
|
} |
||||||
|
|
||||||
|
public double getPctWidth() { |
||||||
|
return pct_width; |
||||||
|
} |
||||||
|
|
||||||
|
public double getPctHeight() { |
||||||
|
return pct_height; |
||||||
|
} |
||||||
|
|
||||||
|
public Controller getController() { |
||||||
|
return parent_controller; |
||||||
|
} |
||||||
|
|
||||||
|
public ControllerModule getModule() { |
||||||
|
return parent; |
||||||
|
} |
||||||
|
|
||||||
|
public double getRange1() { |
||||||
|
return range1; |
||||||
|
} |
||||||
|
|
||||||
|
public double getRange2() { |
||||||
|
return range2; |
||||||
|
} |
||||||
|
|
||||||
|
public int getOrientation() { |
||||||
|
return orientation; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean isVisible() { |
||||||
|
return visible; |
||||||
|
} |
||||||
|
|
||||||
|
public void setVisible(boolean visible) { |
||||||
|
this.visible=visible; |
||||||
|
} |
||||||
|
|
||||||
|
public static void GetAxisDisplay(Graphics g, Axis a, double x, double y, double xscale, double yscale) { |
||||||
|
if (a.twoWayAxis) { |
||||||
|
Color color_identity = g.getColor(); |
||||||
|
g.setColor(a.backgroundColor); |
||||||
|
g.fillRect((int)x, (int)y, (int)xscale, (int)yscale); |
||||||
|
g.setColor(a.indicatorColor); |
||||||
|
double val = 0; |
||||||
|
if (a.identifiers.size()>=1) { |
||||||
|
val=a.parent_controller.getComponent(a.identifiers.get(0)).getPollData(); |
||||||
|
} |
||||||
|
double val1 = a.range1; |
||||||
|
double val2 = a.range2; |
||||||
|
double range_of_motion = (Math.abs(val1)+Math.abs(val2)); |
||||||
|
double smallest_val = 0; |
||||||
|
if (val1<0 || val2<0) { |
||||||
|
smallest_val = Math.abs(Math.min(val1, val2)); |
||||||
|
} |
||||||
|
double area_covered_x = (int)(((val+smallest_val)/range_of_motion)*xscale); |
||||||
|
double area_covered_y = (int)(((val+smallest_val)/range_of_motion)*yscale); |
||||||
|
switch (a.orientation) { |
||||||
|
case 0:{ |
||||||
|
g.fillRect((int)x, (int)y, (int)area_covered_x, (int)yscale); |
||||||
|
}break; |
||||||
|
case 1:{ |
||||||
|
g.fillRect((int)(xscale-area_covered_x+x), (int)y, (int)area_covered_x, (int)yscale); |
||||||
|
}break; |
||||||
|
case 2:{ |
||||||
|
g.fillRect((int)x, (int)(yscale-area_covered_y+y), (int)xscale, (int)area_covered_y); |
||||||
|
}break; |
||||||
|
case 3:{ |
||||||
|
g.fillRect((int)x, (int)y, (int)xscale, (int)area_covered_y); |
||||||
|
}break; |
||||||
|
} |
||||||
|
g.setColor(color_identity); |
||||||
|
} else { |
||||||
|
double xval=0; |
||||||
|
double yval=0; |
||||||
|
for (int i=0;i<a.identifiers.size();i++) { |
||||||
|
Identifier ident = a.identifiers.get(i); |
||||||
|
if (ident.getName().contains("x") || |
||||||
|
ident.getName().contains("X")) { |
||||||
|
xval = a.parent_controller.getComponent(ident).getPollData(); |
||||||
|
} else |
||||||
|
if (ident.getName().contains("y") || |
||||||
|
ident.getName().contains("Y")) { |
||||||
|
yval = a.parent_controller.getComponent(ident).getPollData(); |
||||||
|
} |
||||||
|
} |
||||||
|
Color color_identity = g.getColor(); |
||||||
|
g.setColor(a.backgroundColor); |
||||||
|
g.fillOval((int)x, (int)y, (int)xscale, (int)yscale); |
||||||
|
g.setColor(a.indicatorColor); |
||||||
|
for (int i=-1;i<2;i++) { |
||||||
|
for (int j=-1;j<2;j++) { |
||||||
|
g.drawOval((int)(((xval+1)*12*(xscale/32d))+i+x), (int)(((yval+1)*12*(yscale/32d))+j+y), (int)(8d*(xscale/32d)), (int)(8d*(yscale/32d))); |
||||||
|
} |
||||||
|
} |
||||||
|
g.setColor(color_identity); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,50 @@ |
|||||||
|
package sig.modules.Controller; |
||||||
|
|
||||||
|
import java.awt.Color; |
||||||
|
|
||||||
|
import javax.swing.JTextField; |
||||||
|
import javax.swing.event.DocumentEvent; |
||||||
|
import javax.swing.event.DocumentListener; |
||||||
|
|
||||||
|
import sig.utils.TextUtils; |
||||||
|
|
||||||
|
public class LinkedTextField implements DocumentListener{ |
||||||
|
JTextField field; |
||||||
|
public LinkedTextField(JTextField field) { |
||||||
|
this.field=field; |
||||||
|
} |
||||||
|
|
||||||
|
public JTextField getTextField() { |
||||||
|
return field; |
||||||
|
} |
||||||
|
|
||||||
|
public DocumentListener getListener() { |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void changedUpdate(DocumentEvent e) { |
||||||
|
} |
||||||
|
|
||||||
|
protected boolean fieldIsInvalid() { |
||||||
|
return !TextUtils.isNumeric(field.getText()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void insertUpdate(DocumentEvent e) { |
||||||
|
ValidateForm(); |
||||||
|
} |
||||||
|
|
||||||
|
protected void ValidateForm() { |
||||||
|
if (fieldIsInvalid()) { |
||||||
|
field.setBackground(Color.RED); |
||||||
|
} else { |
||||||
|
field.setBackground(Color.WHITE); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void removeUpdate(DocumentEvent e) { |
||||||
|
ValidateForm(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,51 @@ |
|||||||
|
package sig.modules.Controller; |
||||||
|
|
||||||
|
import java.awt.Color; |
||||||
|
import java.awt.Dimension; |
||||||
|
|
||||||
|
import javax.swing.JTextField; |
||||||
|
import javax.swing.event.DocumentEvent; |
||||||
|
|
||||||
|
public class ResizeTextField extends LinkedTextField{ |
||||||
|
ControlConfigurationWindow window; |
||||||
|
SizeType type; |
||||||
|
|
||||||
|
public ResizeTextField(JTextField field,ControlConfigurationWindow window,SizeType type) { |
||||||
|
super(field); |
||||||
|
this.window=window; |
||||||
|
this.type=type; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public void insertUpdate(DocumentEvent e) { |
||||||
|
ValidateFormAndResizeComponent(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void removeUpdate(DocumentEvent e) { |
||||||
|
ValidateFormAndResizeComponent(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
private void ValidateFormAndResizeComponent() { |
||||||
|
ValidateForm(); |
||||||
|
ResizeComponent(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
private void ResizeComponent() { |
||||||
|
if (!fieldIsInvalid()) { |
||||||
|
switch (type) { |
||||||
|
case HEIGHT: |
||||||
|
window.axis_height=Integer.parseInt(field.getText()); |
||||||
|
break; |
||||||
|
case WIDTH: |
||||||
|
window.axis_width=Integer.parseInt(field.getText()); |
||||||
|
break; |
||||||
|
} |
||||||
|
window.previewpanel.setPreferredSize(new Dimension(window.axis_width,window.axis_height)); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,6 @@ |
|||||||
|
package sig.modules.Controller; |
||||||
|
|
||||||
|
public enum SizeType { |
||||||
|
WIDTH, |
||||||
|
HEIGHT |
||||||
|
} |
Loading…
Reference in new issue