MainPanel prototype

This commit is contained in:
gac-S_Changer
2018-05-02 10:19:45 +02:00
parent 7bb86009d1
commit d8ea628d9f
7 changed files with 1004 additions and 740 deletions

View File

@@ -1,186 +1,186 @@
/*
* Copyright (c) 2014 Paul Scherrer Institute. All rights reserved.
*/
package ch.psi.mxsc;
import ch.psi.pshell.device.Device;
import ch.psi.pshell.device.DeviceBase;
import ch.psi.pshell.imaging.DimensionDouble;
import ch.psi.pshell.imaging.PointDouble;
import ch.psi.utils.swing.SwingUtils;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
/**
*
*/
public class Sample extends DeviceBase {
final int index;
public Sample(Puck puck, int index){
super(puck.getName() + ":" + (index+1));
setParent(puck);
this.index = index;
}
public Puck getPuck() {
return (Puck) getParent();
}
DimensionDouble getSize(){
return new DimensionDouble(12.0, 12.0);
}
public int getIndex() {
return index;
}
boolean enabled;
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean value) {
enabled = value;
}
boolean selected;
public boolean isSelected() {
return selected && getPuck().getBasePlate().isSelectable();
}
public void setSelected(boolean value) {
if (value != selected){
if (value == true){
((Puck)getParent()).setSelected(true);
for (Device d : getParent().getChildren()){
if (d instanceof Sample){
((Sample)d).selected = false;
}
}
}
selected = value;
}
}
boolean present;
public boolean isPresent() {
return present;
}
public void setPresent(boolean value) {
present = value;
}
boolean loaded;
public boolean isLoaded() {
return loaded;
}
public void setLoaded(boolean value) {
loaded = value;
if (value) {
wasLoaded = true;
}
}
boolean wasLoaded;
public boolean wasLoaded() {
return wasLoaded;
}
Color getColor() {
Color ret = Color.LIGHT_GRAY;
if (isLoaded()) {
ret = Color.BLUE;
} else if (wasLoaded()) {
ret = Color.GREEN;
} else if (isPresent()) {
ret = Color.CYAN.darker().darker();
}
if (isSelected()) {
ret = ret.brighter();
}
return ret;
}
int getNormalDrawSize() {
return getPuck().getDrawSize(getSize().getWidth() );
}
int getDrawSize() {
int ret = getNormalDrawSize();
if (isSelected()) {
ret += 2;
}
return ret;
}
Point getDrawPosition() {
return getPuck().getDrawPosition(getPuck().getSamplePosition(this));
}
Color getLabelColor(boolean drawBackground) {
return drawBackground ? getPuck().isHighlithted() ? Color.DARK_GRAY : new Color(92, 92, 92) : new Color (0,96,0);
}
Font getLabelFont() {
//return new Font("Times New Roman", Font.PLAIN, 8);
return new Font("Courier New", Font.PLAIN, 8);
}
Point getLabelPosition(String text, Graphics g) {
Point center = getDrawPosition();
Dimension textSize = SwingUtils.getTextSize(text, g.getFontMetrics());
return new Point(center.x - textSize.width / 2 + 1, center.y + (g.getFontMetrics().getAscent()/2));
}
Color getBorderColor(boolean drawBackground) {
if (drawBackground){
if (!isEnabled()) {
return Color.GRAY;
} else if (isSelected()) {
return new Color(32,32,32);
}
return Color.GRAY;
}
return isSelected() ? new Color(0,32,0) : new Color(0,128,0);
}
void draw (Graphics2D g, boolean drawBackground){
Point position = getDrawPosition();
int size = getDrawSize();
if (drawBackground){
g.setColor(getColor());
g.fillOval(position.x - size / 2, position.y - size / 2, size, size);
}
g.setColor(getBorderColor(drawBackground));
g.drawOval(position.x - size / 2, position.y - size / 2, size, size);
String text = String.valueOf(index + 1);
Point labelPosition = getLabelPosition(text, g);
if (getNormalDrawSize()>10){
g.setColor(getLabelColor(drawBackground));
g.setFont(getLabelFont());
g.drawString(text, labelPosition.x, labelPosition.y);
}
g.setPaintMode();
}
}
/*
* Copyright (c) 2014 Paul Scherrer Institute. All rights reserved.
*/
package ch.psi.mxsc;
import ch.psi.pshell.device.Device;
import ch.psi.pshell.device.DeviceBase;
import ch.psi.pshell.imaging.DimensionDouble;
import ch.psi.pshell.imaging.PointDouble;
import ch.psi.utils.swing.SwingUtils;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
/**
*
*/
public class Sample extends DeviceBase {
final int index;
public Sample(Puck puck, int index){
super(puck.getName() + ":" + (index+1));
setParent(puck);
this.index = index;
}
public Puck getPuck() {
return (Puck) getParent();
}
DimensionDouble getSize(){
return new DimensionDouble(12.0, 12.0);
}
public int getIndex() {
return index;
}
boolean enabled;
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean value) {
enabled = value;
}
boolean selected;
public boolean isSelected() {
return selected && getPuck().getBasePlate().isSelectable();
}
public void setSelected(boolean value) {
if (value != selected){
if (value == true){
((Puck)getParent()).setSelected(true);
for (Device d : getParent().getChildren()){
if (d instanceof Sample){
((Sample)d).selected = false;
}
}
}
selected = value;
}
}
boolean present;
public boolean isPresent() {
return present;
}
public void setPresent(boolean value) {
present = value;
}
boolean loaded;
public boolean isLoaded() {
return loaded;
}
public void setLoaded(boolean value) {
loaded = value;
if (value) {
wasLoaded = true;
}
}
boolean wasLoaded;
public boolean wasLoaded() {
return wasLoaded;
}
Color getColor() {
Color ret = Color.LIGHT_GRAY;
if (isLoaded()) {
ret = Color.BLUE;
} else if (wasLoaded()) {
ret = Color.GREEN;
} else if (isPresent()) {
ret = Color.CYAN.darker().darker();
}
if (isSelected()) {
ret = ret.brighter();
}
return ret;
}
int getNormalDrawSize() {
return getPuck().getDrawSize(getSize().getWidth() );
}
int getDrawSize() {
int ret = getNormalDrawSize();
if (isSelected()) {
ret += 2;
}
return ret;
}
Point getDrawPosition() {
return getPuck().getDrawPosition(getPuck().getSamplePosition(this));
}
Color getLabelColor(boolean drawBackground) {
return drawBackground ? getPuck().isHighlithted() ? Color.DARK_GRAY : new Color(92, 92, 92) : new Color (0,96,0);
}
Font getLabelFont() {
//return new Font("Times New Roman", Font.PLAIN, 8);
return new Font("Courier New", Font.PLAIN, 8);
}
Point getLabelPosition(String text, Graphics g) {
Point center = getDrawPosition();
Dimension textSize = SwingUtils.getTextSize(text, g.getFontMetrics());
return new Point(center.x - textSize.width / 2 + 1, center.y + (g.getFontMetrics().getAscent()/2));
}
Color getBorderColor(boolean drawBackground) {
if (drawBackground){
if (!isEnabled()) {
return Color.GRAY;
} else if (isSelected()) {
return new Color(32,32,32);
}
return Color.GRAY;
}
return isSelected() ? new Color(0,32,0) : new Color(0,128,0);
}
void draw (Graphics2D g, boolean drawBackground){
Point position = getDrawPosition();
int size = getDrawSize();
if (drawBackground){
g.setColor(getColor());
g.fillOval(position.x - size / 2, position.y - size / 2, size, size);
}
g.setColor(getBorderColor(drawBackground));
g.drawOval(position.x - size / 2, position.y - size / 2, size, size);
String text = String.valueOf(index + 1);
Point labelPosition = getLabelPosition(text, g);
if (getNormalDrawSize()>10){
g.setColor(getLabelColor(drawBackground));
g.setFont(getLabelFont());
g.drawString(text, labelPosition.x, labelPosition.y);
}
g.setPaintMode();
}
}