This commit is contained in:
@@ -78,13 +78,18 @@ public class BasePlate extends DeviceBase {
|
||||
return (BasePlateConfig) super.getConfig();
|
||||
}
|
||||
|
||||
boolean selectable;
|
||||
public boolean isSelectable() {
|
||||
return selectable;
|
||||
enum SelectionMode{
|
||||
Samples,
|
||||
Pucks,
|
||||
None
|
||||
}
|
||||
SelectionMode selectionMode = SelectionMode.None;
|
||||
public SelectionMode getSelectionMode() {
|
||||
return selectionMode;
|
||||
}
|
||||
|
||||
public void setSelectable(boolean selectable) {
|
||||
this.selectable = selectable;
|
||||
public void setSelectionMode(SelectionMode selectionMode) {
|
||||
this.selectionMode = selectionMode;
|
||||
}
|
||||
|
||||
public Puck[] getPucks() {
|
||||
@@ -97,7 +102,7 @@ public class BasePlate extends DeviceBase {
|
||||
|
||||
|
||||
Puck getSelectedPuck(){
|
||||
if (selectable){
|
||||
if (selectionMode!=SelectionMode.None){
|
||||
for (Puck p:getPucks()){
|
||||
if (p.isSelected()){
|
||||
return p;
|
||||
@@ -108,7 +113,7 @@ public class BasePlate extends DeviceBase {
|
||||
}
|
||||
|
||||
Sample getSelectedSample(){
|
||||
if (selectable){
|
||||
if (selectionMode==SelectionMode.Samples){
|
||||
Puck puck = getSelectedPuck();
|
||||
if (puck != null){
|
||||
for (Sample s: puck.getSamples()){
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
package ch.psi.mxsc;
|
||||
|
||||
import ch.psi.mxsc.BasePlate.DrawMode;
|
||||
import ch.psi.mxsc.BasePlate.SelectionMode;
|
||||
import ch.psi.pshell.imaging.Data;
|
||||
import ch.psi.pshell.imaging.ImageListener;
|
||||
import ch.psi.pshell.imaging.Source;
|
||||
@@ -302,24 +303,25 @@ public class BasePlatePanel extends DevicePanel {
|
||||
}
|
||||
|
||||
void selectSample(Sample sample){
|
||||
if (getDevice().isSelectable()){
|
||||
if (getDevice().getSelectionMode()==SelectionMode.Samples){
|
||||
sample.setSelected(true);
|
||||
repaint();
|
||||
Controller.getInstance().onSamplePressed(sample);
|
||||
}
|
||||
Controller.getInstance().onSamplePressed(sample);
|
||||
|
||||
}
|
||||
|
||||
void onSamplePressed(MouseEvent e, Sample sample){
|
||||
if (getDevice().isSelectable()){
|
||||
if (getDevice().getSelectionMode()==SelectionMode.Samples){
|
||||
if (TOGGLE_SELECTION){
|
||||
sample.toggleSelected(true);
|
||||
} else {
|
||||
sample.setSelected(true);
|
||||
}
|
||||
repaint();
|
||||
Controller.getInstance().onSamplePressed(sample);
|
||||
} else if (getDevice().getSelectionMode()==SelectionMode.Pucks){
|
||||
onPuckPressed(e, sample.getPuck());
|
||||
}
|
||||
Controller.getInstance().onSamplePressed(sample);
|
||||
}
|
||||
|
||||
void onSampleReleased(MouseEvent e, Sample sample){
|
||||
@@ -342,23 +344,23 @@ public class BasePlatePanel extends DevicePanel {
|
||||
}
|
||||
|
||||
void selectPuck(Puck puck){
|
||||
if (getDevice().isSelectable()){
|
||||
if (getDevice().getSelectionMode()!=SelectionMode.None){
|
||||
puck.setSelected(true);
|
||||
repaint();
|
||||
}
|
||||
Controller.getInstance().onPuckPressed(puck);
|
||||
repaint();
|
||||
Controller.getInstance().onPuckPressed(puck);
|
||||
}
|
||||
}
|
||||
|
||||
void onPuckPressed(MouseEvent e, Puck puck){
|
||||
if (getDevice().isSelectable()){
|
||||
if (getDevice().getSelectionMode()!=SelectionMode.None){
|
||||
if (TOGGLE_SELECTION){
|
||||
puck.toggleSelected(true);
|
||||
} else {
|
||||
puck.setSelected(true);
|
||||
}
|
||||
repaint();
|
||||
repaint();
|
||||
Controller.getInstance().onPuckPressed(puck);
|
||||
}
|
||||
Controller.getInstance().onPuckPressed(puck);
|
||||
}
|
||||
|
||||
void onPuckReleased(MouseEvent e, Puck puck){
|
||||
|
||||
@@ -15,6 +15,7 @@ import ch.psi.pshell.ui.App;
|
||||
import ch.psi.pshell.ui.Panel;
|
||||
import ch.psi.utils.State;
|
||||
import ch.psi.utils.swing.SwingUtils;
|
||||
import ch.psi.mxsc.BasePlate.SelectionMode;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Component;
|
||||
@@ -88,7 +89,7 @@ public class MainPanel extends Panel {
|
||||
SwingUtils.getWindow(this).setIconImage(img);
|
||||
}
|
||||
basePlatePanel.setDevice(Controller.getInstance().basePlate);
|
||||
basePlatePanel.getDevice().setSelectable(true);
|
||||
basePlatePanel.getDevice().setSelectionMode(SelectionMode.Pucks);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -97,7 +98,7 @@ public class MainPanel extends Panel {
|
||||
Controller.getInstance().onInitialize(runCount);
|
||||
if (basePlatePanel.getDevice() != (Device) getDevice("BasePlate")){
|
||||
basePlatePanel.setDevice((Device) getDevice("BasePlate"));
|
||||
basePlatePanel.getDevice().setSelectable(true);
|
||||
basePlatePanel.getDevice().setSelectionMode(SelectionMode.Pucks);
|
||||
}
|
||||
try {
|
||||
devicesPanel.initialize();
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
*/
|
||||
package ch.psi.mxsc;
|
||||
|
||||
import ch.psi.mxsc.BasePlate.SelectionMode;
|
||||
import ch.psi.pshell.device.Device;
|
||||
import ch.psi.pshell.device.DeviceBase;
|
||||
import ch.psi.pshell.imaging.DimensionDouble;
|
||||
@@ -284,7 +285,7 @@ public class Puck extends DeviceBase {
|
||||
private boolean selected;
|
||||
|
||||
public boolean isSelected() {
|
||||
return selected && getBasePlate().isSelectable();
|
||||
return selected && (getBasePlate().getSelectionMode()!=SelectionMode.None);
|
||||
}
|
||||
|
||||
public void toggleSelected(boolean value) {
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
*/
|
||||
package ch.psi.mxsc;
|
||||
|
||||
import ch.psi.mxsc.BasePlate.SelectionMode;
|
||||
import ch.psi.pshell.device.Device;
|
||||
import ch.psi.pshell.device.DeviceBase;
|
||||
import ch.psi.pshell.imaging.DimensionDouble;
|
||||
@@ -55,7 +56,7 @@ public class Sample extends DeviceBase {
|
||||
boolean selected;
|
||||
|
||||
public boolean isSelected() {
|
||||
return selected && getPuck().getBasePlate().isSelectable();
|
||||
return selected && (getPuck().getBasePlate().getSelectionMode() == SelectionMode.Samples);
|
||||
}
|
||||
|
||||
public void toggleSelected(boolean value) {
|
||||
|
||||
31
src/main/java/ch/psi/mxsc/SinglePuckPanel.java
Normal file
31
src/main/java/ch/psi/mxsc/SinglePuckPanel.java
Normal file
@@ -0,0 +1,31 @@
|
||||
|
||||
package ch.psi.mxsc;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Rectangle;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class SinglePuckPanel extends JPanel {
|
||||
|
||||
int puckBorder = 20;
|
||||
Puck puck;
|
||||
|
||||
public SinglePuckPanel(Puck puck) {
|
||||
this.puck = puck;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paint(Graphics g) {
|
||||
Graphics2D g2d = (Graphics2D) g;
|
||||
super.paint(g);
|
||||
Dimension size = getSize();
|
||||
Rectangle puckPlotRect = new Rectangle(puckBorder, puckBorder, size.width - 2 * puckBorder, size.height - 2 * puckBorder);
|
||||
puck.draw(g2d, puckPlotRect, true, true, true, null);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user