Skip to content
Snippets Groups Projects
Commit 50492a26 authored by Raphael GIRARDOT's avatar Raphael GIRARDOT
Browse files

Clic on DataFitter's section border will open atkpanel on associated DataFitter (SCAN-955)

parent e5f3ef58
No related branches found
No related tags found
No related merge requests found
......@@ -59,28 +59,6 @@ public class SalsaDisplayManagerBean extends AbstractSalsaBean {
}
}
/**
* Main test
*
* @param args
*/
public static void main(String[] args) {
SalsaDisplayManagerBean bean = new SalsaDisplayManagerBean();
configureBeanWithoutConfig(bean);
// configureBeanWithConfigAtLoad(bean);
// configureBeanWithConfigAtNewScan(bean);
// configureBeanWithConfigAtNewScanAndReload(bean);
SalsaDisplayManagerBean panel = new SalsaDisplayManagerBean();
bean.loadConfig();
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("SalsaDisplayManagerBean");
frame.setContentPane(bean);
frame.setContentPane(panel);
frame.setSize(600, 500);
frame.setVisible(true);
}
// Test without config
public static void configureBeanWithoutConfig(SalsaDisplayManagerBean bean) {
bean.setCurrentConfigAtLoad(false);
......@@ -103,4 +81,27 @@ public class SalsaDisplayManagerBean extends AbstractSalsaBean {
bean.setCurrentConfigAtNewScan(true);
bean.setReloadConfigAtRead(true);
}
/**
* Main test
*
* @param args
*/
public static void main(String[] args) {
SalsaDisplayManagerBean bean = new SalsaDisplayManagerBean();
configureBeanWithoutConfig(bean);
// configureBeanWithConfigAtLoad(bean);
// configureBeanWithConfigAtNewScan(bean);
// configureBeanWithConfigAtNewScanAndReload(bean);
SalsaDisplayManagerBean panel = new SalsaDisplayManagerBean();
bean.loadConfig();
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("SalsaDisplayManagerBean");
frame.setContentPane(bean);
frame.setContentPane(panel);
frame.setSize(600, 500);
frame.setVisible(true);
}
}
package fr.soleil.salsa.view;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.font.TextAttribute;
import java.util.HashMap;
import java.util.Map;
import javax.swing.Icon;
import javax.swing.JButton;
......@@ -11,12 +18,17 @@ import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
import javax.swing.border.Border;
import fr.soleil.bean.scanserver.CurrentScanConfigurationBean;
import fr.soleil.bean.scanserver.DataFitterConfigurationBean;
import fr.soleil.comete.box.scalarbox.StringScalarBox;
import fr.soleil.comete.swing.border.CometeTitledBorder;
import fr.soleil.comete.swing.util.CometeUtils;
import fr.soleil.comete.swing.util.EDTManager;
import fr.soleil.comete.tango.data.service.helper.TangoDeviceHelper;
import fr.soleil.lib.project.ObjectUtils;
import fr.soleil.lib.project.file.BatchExecutor;
import fr.soleil.model.scanserver.CurrentScanDataModel;
import fr.soleil.salsa.api.SalsaAPI;
import fr.soleil.salsa.client.preferences.UIPreferences;
......@@ -26,7 +38,104 @@ import fr.soleil.salsa.tool.SalsaUtils;
public class DisplayManagerBean extends CurrentScanConfigurationBean {
private static final long serialVersionUID = -2833230269809938175L;
private static final long serialVersionUID = -4360675548662392206L;
protected static final BatchExecutor EXECUTOR = new BatchExecutor();
protected static final Font PROXY_TITLE_FONT, PROXY_TITLE_HIGHLIGHT_FONT;
static {
Font font, highlightFont;
Border border = DataFitterConfigurationBean.PROXY_PANEL.getBorder();
if (border instanceof CometeTitledBorder) {
CometeTitledBorder ctBorder = (CometeTitledBorder) border;
font = ctBorder.getTitleFont();
Map<TextAttribute, ?> tmpAttributes = font.getAttributes();
Map<TextAttribute, Object> attributes = new HashMap<>();
attributes.putAll(tmpAttributes);
attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
highlightFont = new Font(attributes);
} else {
font = null;
highlightFont = null;
}
PROXY_TITLE_FONT = font;
PROXY_TITLE_HIGHLIGHT_FONT = highlightFont;
MouseAdapter adapter = new MouseAdapter() {
protected boolean isTitleZone(MouseEvent e, CometeTitledBorder ctBorder) {
boolean titleZone;
if (e == null || ctBorder == null) {
titleZone = false;
} else {
if (DataFitterConfigurationBean.DEFAULT_TITLE.equals(ctBorder.getTitle())) {
titleZone = false;
} else {
Rectangle bounds = ctBorder.getLabelBounds(DataFitterConfigurationBean.PROXY_PANEL, 0, 0,
DataFitterConfigurationBean.PROXY_PANEL.getWidth(),
DataFitterConfigurationBean.PROXY_PANEL.getHeight());
titleZone = bounds != null & bounds.contains(e.getPoint());
}
}
return titleZone;
}
protected void treatBorderMouseEvent(MouseEvent e) {
Border border = DataFitterConfigurationBean.PROXY_PANEL.getBorder();
if (border instanceof CometeTitledBorder) {
CometeTitledBorder ctBorder = (CometeTitledBorder) border;
Font font;
if (isTitleZone(e, ctBorder)) {
font = PROXY_TITLE_HIGHLIGHT_FONT;
} else {
font = PROXY_TITLE_FONT;
}
if (!ObjectUtils.sameObject(font, ctBorder.getTitleFont())) {
ctBorder.setTitleFont(font);
}
}
}
@Override
public void mouseEntered(MouseEvent e) {
treatBorderMouseEvent(e);
}
@Override
public void mouseExited(MouseEvent e) {
Border border = DataFitterConfigurationBean.PROXY_PANEL.getBorder();
if (border instanceof CometeTitledBorder) {
((CometeTitledBorder) border).setTitleFont(PROXY_TITLE_FONT);
}
}
@Override
public void mouseMoved(MouseEvent e) {
treatBorderMouseEvent(e);
}
@Override
public void mousePressed(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1) {
String controlPanel = UIPreferences.getInstance().getControlPanel();
if ((controlPanel != null) && !controlPanel.trim().isEmpty()) {
Border border = DataFitterConfigurationBean.PROXY_PANEL.getBorder();
if (border instanceof CometeTitledBorder) {
CometeTitledBorder ctBorder = (CometeTitledBorder) border;
if ((!DataFitterConfigurationBean.DEFAULT_TITLE.equals(ctBorder.getTitle()))
&& isTitleZone(e, ctBorder)) {
EXECUTOR.setBatch(controlPanel);
EXECUTOR.setBatchParameters(ctBorder.getTitle());
EXECUTOR.execute();
}
}
}
}
}
};
DataFitterConfigurationBean.PROXY_PANEL.addMouseListener(adapter);
DataFitterConfigurationBean.PROXY_PANEL.addMouseMotionListener(adapter);
}
private static final Icon WARNING_ICON = Icons.getIcon("salsa.warning.big");
......@@ -66,11 +175,7 @@ public class DisplayManagerBean extends CurrentScanConfigurationBean {
String scanServerName = devicePreferences.getScanServer();
setScanServerName(scanServerName);
dataFitterName = devicePreferences.getDataFitter();
if (TangoDeviceHelper.isDeviceRunning(dataFitterName)) {
super.setDataFitterDeviceName(dataFitterName);
} else {
super.setDataFitterDeviceName(null);
}
setDataFitterDeviceName(dataFitterName == null || dataFitterName.trim().isEmpty() ? null : dataFitterName);
CurrentScanDataModel.setScanPropertiesMap(UIPreferences.getInstance().getCurrentScanPropertiesMap());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment