This commit is contained in:
gac-S_Changer
2018-08-22 11:43:29 +02:00
parent 250af86505
commit 52a8daf5c0
6 changed files with 64 additions and 23 deletions

View File

@@ -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()){

View File

@@ -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){

View File

@@ -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();

View File

@@ -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) {

View File

@@ -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) {

View 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);
}
}