
jive.AttributePanel Maven / Gradle / Ivy
The newest version!
package jive;
import fr.esrf.TangoApi.*;
import fr.esrf.Tango.*;
import fr.esrf.tangoatk.widget.util.ATKConstant;
import fr.esrf.tangoatk.widget.util.ErrorPane;
import fr.esrf.tangoatk.widget.util.ATKGraphicsUtils;
import fr.esrf.tangoatk.widget.util.chart.JLDataView;
import fr.esrf.tangoatk.widget.util.chart.JLChart;
import fr.esrf.tangoatk.widget.util.chart.JLAxis;
import fr.esrf.tangoatk.widget.attribute.NumberImageViewer;
import fr.esrf.TangoDs.TangoConst;
import javax.swing.*;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
import java.awt.*;
import java.awt.datatransfer.*;
import java.awt.dnd.*;
import java.awt.event.*;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.TimeZone;
/**
* The command panel.
*/
class AttributePanel extends JPanel implements ActionListener,ListSelectionListener,TangoConst,MouseListener,ClipboardOwner,DragGestureListener,DragSourceListener {
private AttributeInfoEx[] attList;
private ConsolePanel console;
private DeviceProxy device;
private CommonPanel common;
private JComboBox arginCombo;
private JLabel arginLabel;
private JLabel descrLabel;
private JList attributeList;
private JScrollPane attributeView;
private JTextArea descrList;
private JScrollPane descrView;
private JButton readBtn;
private JButton writeBtn;
private JButton plotBtn;
private JFrame chartDlg = null;
private JLChart chart;
private JLDataView plotData;
private JFrame imageDlg = null;
private NumberImageViewer image;
private JPopupMenu copyMenu;
private JMenuItem copyAttributeMenuItem;
private JMenuItem copyDevAttributeMenuItem;
/**
* Construct the device panel
* @param ds DeviceProxy
*/
AttributePanel(DeviceProxy ds,ConsolePanel console,CommonPanel common) throws DevFailed {
setLayout(null);
this.console = console;
this.common = common;
this.device = ds;
attList = getAttributeList();
arginLabel = new JLabel("Argin value");
arginLabel.setFont(ATKConstant.labelFont);
add(arginLabel);
descrLabel = new JLabel();
descrLabel.setFont(ATKConstant.labelFont);
descrLabel.setHorizontalAlignment(JLabel.RIGHT);
add(descrLabel);
arginCombo = new JComboBox();
arginCombo.setEditable(true);
arginCombo.setFont(ATKConstant.labelFont);
add(arginCombo);
DefaultListModel ml = new DefaultListModel();
for (int i = 0; i < attList.length; i++)
ml.add(i, attList[i].name);
attributeList = new JList(ml);
attributeList.addListSelectionListener(this);
attributeList.addMouseListener(this);
DragSource dragSource = DragSource.getDefaultDragSource();
dragSource.createDefaultDragGestureRecognizer(attributeList,
DnDConstants.ACTION_MOVE,
this);
attributeView = new JScrollPane(attributeList);
add(attributeView);
descrList = new JTextArea();
descrList.setFont(new Font("monospaced",Font.PLAIN,12));
descrList.setEditable(false);
descrView = new JScrollPane(descrList);
add(descrView);
readBtn = new JButton("Read");
readBtn.setFont(ATKConstant.labelFont);
add(readBtn);
readBtn.addActionListener(this);
writeBtn = new JButton("Write");
writeBtn.setFont(ATKConstant.labelFont);
add(writeBtn);
writeBtn.addActionListener(this);
plotBtn = new JButton("Plot");
plotBtn.setFont(ATKConstant.labelFont);
add(plotBtn);
plotBtn.addActionListener(this);
addComponentListener(new ComponentListener() {
public void componentHidden(ComponentEvent e) {}
public void componentMoved(ComponentEvent e) {}
public void componentResized(ComponentEvent e) {
placeComponents(getSize());
}
public void componentShown(ComponentEvent e) {
placeComponents(getSize());
}
});
// Default
attributeList.setSelectedIndex(0);
// Popup menu
copyMenu = new JPopupMenu();
copyAttributeMenuItem = new JMenuItem("Copy attribute");
copyAttributeMenuItem.addActionListener(this);
copyMenu.add(copyAttributeMenuItem);
copyDevAttributeMenuItem = new JMenuItem("Copy device/attribute");
copyDevAttributeMenuItem.addActionListener(this);
copyMenu.add(copyDevAttributeMenuItem);
}
public String indentString(String in,String space) {
String[] s = in.trim().split("\n");
if(s.length>1) {
String r = s[0] + "\n";
for(int i=1;i0) {
end = false;
tmp = lst[i];
lst[i] = lst[i+1];
lst[i+1] = tmp;
}
}
j--;
}
return lst;
}
private void placeComponents(Dimension dim) {
arginLabel.setBounds(10,0,80,20);
descrLabel.setBounds(90,0,dim.width-100,20);
arginCombo.setBounds(10,20,dim.width-20,25);
attributeView.setBounds(10,50,190,dim.height-60);
attributeView.revalidate();
descrView.setBounds(205,50,dim.width-215,dim.height-90);
descrView.revalidate();
int dim2 = (dim.width - 220) / 3;
readBtn.setBounds(205,dim.height-35,dim2,25);
writeBtn.setBounds(205+dim2+2,dim.height-35,dim2,25);
plotBtn.setBounds(205+2*dim2+5,dim.height-35,dim2,25);
}
private void addArgin(String text) {
// Add the input string if not already done
boolean found = false;
int i = 0;
while(i 1) {
if (writable)
retStr.append("Write length: " + length + "\n");
else
retStr.append("Read length: " + length + "\n");
}
if( checkLimit ) {
if(length>common.getAnswerLimitMax()) {
retStr.append("Array cannot be fully displayed. (You may change the AnswerLimitMax)\n");
return common.getAnswerLimitMax();
} else {
return length;
}
} else {
return length;
}
}
private int getLimitMin(boolean checkLimit,StringBuffer retStr,int length) {
if( checkLimit ) {
if(length<=common.getAnswerLimitMin()) {
retStr.append("Array cannot be displayed. (You may change the AnswerLimitMin)\n");
return length;
} else {
return common.getAnswerLimitMin();
}
} else {
return 0;
}
}
private int getLimitMaxForPlot(int length) {
if(length>common.getAnswerLimitMax()) {
return common.getAnswerLimitMax();
} else {
return length;
}
}
private int getLimitMinForPlot(int length) {
if(length<=common.getAnswerLimitMin()) {
return length;
} else {
return common.getAnswerLimitMin();
}
}
private void insertData(String argin,DeviceAttribute send,AttributeInfoEx ai) throws NumberFormatException {
ArgParser arg = new ArgParser(argin);
switch (ai.data_type) {
case Tango_DEV_STATE:
switch (ai.data_format.value()) {
case AttrDataFormat._SCALAR:
send.insert(arg.parse_state());
break;
case AttrDataFormat._SPECTRUM:
send.insert(arg.parse_state_array());
break;
case AttrDataFormat._IMAGE:
send.insert(arg.parse_state_image(),arg.get_image_width(),arg.get_image_height());
break;
}
break;
case Tango_DEV_UCHAR:
switch (ai.data_format.value()) {
case AttrDataFormat._SCALAR:
send.insert_uc(arg.parse_uchar());
break;
case AttrDataFormat._SPECTRUM:
send.insert_uc(arg.parse_uchar_array());
break;
case AttrDataFormat._IMAGE:
send.insert_uc(arg.parse_uchar_image(),arg.get_image_width(),arg.get_image_height());
break;
}
break;
case Tango_DEV_BOOLEAN:
switch (ai.data_format.value()) {
case AttrDataFormat._SCALAR:
send.insert(arg.parse_boolean());
break;
case AttrDataFormat._SPECTRUM:
send.insert(arg.parse_boolean_array());
break;
case AttrDataFormat._IMAGE:
send.insert(arg.parse_boolean_image(),arg.get_image_width(),arg.get_image_height());
break;
}
break;
case Tango_DEV_SHORT:
switch (ai.data_format.value()) {
case AttrDataFormat._SCALAR:
send.insert(arg.parse_short());
break;
case AttrDataFormat._SPECTRUM:
send.insert(arg.parse_short_array());
break;
case AttrDataFormat._IMAGE:
send.insert(arg.parse_short_image(),arg.get_image_width(),arg.get_image_height());
break;
}
break;
case Tango_DEV_USHORT:
switch (ai.data_format.value()) {
case AttrDataFormat._SCALAR:
send.insert_us(arg.parse_ushort());
break;
case AttrDataFormat._SPECTRUM:
send.insert_us(arg.parse_ushort_array());
break;
case AttrDataFormat._IMAGE:
send.insert_us(arg.parse_ushort_image(),arg.get_image_width(),arg.get_image_height());
break;
}
break;
case Tango_DEV_LONG:
switch (ai.data_format.value()) {
case AttrDataFormat._SCALAR:
send.insert(arg.parse_long());
break;
case AttrDataFormat._SPECTRUM:
send.insert(arg.parse_long_array());
break;
case AttrDataFormat._IMAGE:
send.insert(arg.parse_long_image(),arg.get_image_width(),arg.get_image_height());
break;
}
break;
case Tango_DEV_ULONG:
switch (ai.data_format.value()) {
case AttrDataFormat._SCALAR:
send.insert_ul(arg.parse_ulong());
break;
case AttrDataFormat._SPECTRUM:
send.insert_ul(arg.parse_ulong_array());
break;
case AttrDataFormat._IMAGE:
send.insert_ul(arg.parse_ulong_image(),arg.get_image_width(),arg.get_image_height());
break;
}
break;
case Tango_DEV_LONG64:
switch (ai.data_format.value()) {
case AttrDataFormat._SCALAR:
send.insert(arg.parse_long64());
break;
case AttrDataFormat._SPECTRUM:
send.insert(arg.parse_long64_array());
break;
case AttrDataFormat._IMAGE:
send.insert(arg.parse_long64_image(),arg.get_image_width(),arg.get_image_height());
break;
}
break;
case Tango_DEV_ULONG64:
switch (ai.data_format.value()) {
case AttrDataFormat._SCALAR:
send.insert_u64(arg.parse_long64());
break;
case AttrDataFormat._SPECTRUM:
send.insert_u64(arg.parse_long64_array());
break;
case AttrDataFormat._IMAGE:
send.insert_u64(arg.parse_long64_image(),arg.get_image_width(),arg.get_image_height());
break;
}
break;
case Tango_DEV_FLOAT:
switch (ai.data_format.value()) {
case AttrDataFormat._SCALAR:
send.insert(arg.parse_float());
break;
case AttrDataFormat._SPECTRUM:
send.insert(arg.parse_float_array());
break;
case AttrDataFormat._IMAGE:
send.insert(arg.parse_float_image(),arg.get_image_width(),arg.get_image_height());
break;
}
break;
case Tango_DEV_DOUBLE:
switch (ai.data_format.value()) {
case AttrDataFormat._SCALAR:
send.insert(arg.parse_double());
break;
case AttrDataFormat._SPECTRUM:
send.insert(arg.parse_double_array());
break;
case AttrDataFormat._IMAGE:
send.insert(arg.parse_double_image(),arg.get_image_width(),arg.get_image_height());
break;
}
break;
case Tango_DEV_STRING:
switch (ai.data_format.value()) {
case AttrDataFormat._SCALAR:
send.insert(arg.parse_string());
break;
case AttrDataFormat._SPECTRUM:
send.insert(arg.parse_string_array());
break;
case AttrDataFormat._IMAGE:
send.insert(arg.parse_string_image(),arg.get_image_width(),arg.get_image_height());
break;
}
break;
case Tango_DEV_ENUM:
// Convert string to short array
switch (ai.data_format.value())
{
case AttrDataFormat._SCALAR: {
String in = arg.parse_string();
short idx = (short) JiveUtils.isInsideArray(in, ai.enum_label);
if (idx < 0)
throw new NumberFormatException("\"" + in + "\" not known in enum\nPossible values are:\n"+
JiveUtils.stringArrayToString(ai.enum_label));
send.insert(idx);
}
break;
case AttrDataFormat._SPECTRUM:
{
String[] in = arg.parse_string_array();
short[] idx = new short[in.length];
for (int i = 0; i < in.length; i++) {
idx[i] = (short) JiveUtils.isInsideArray(in[i], ai.enum_label);
if (idx[i] < 0)
throw new NumberFormatException("\"" + in[i] + "\" not known in enum\nPossible values are:\n"+
JiveUtils.stringArrayToString(ai.enum_label));
}
send.insert(idx);
}
break;
case AttrDataFormat._IMAGE:
{
String[] in = arg.parse_string_image();
int width = arg.get_image_width();
int height = arg.get_image_height();
short[] idx = new short[in.length];
for (int i = 0; i < in.length; i++) {
idx[i] = (short) JiveUtils.isInsideArray(in[i], ai.enum_label);
if (idx[i] < 0)
throw new NumberFormatException("\"" + in[i] + "\" not known in enum\nPossible values are:\n"+
JiveUtils.stringArrayToString(ai.enum_label));
}
send.insert(idx, width, height);
}
break;
}
break;
default:
throw new NumberFormatException("Attribute type not supported code=" + ai.data_type);
}
}
private void printArrayItem(StringBuffer str,int idx,boolean printIdx,
String value,boolean writeable) {
if(!writeable) {
if(printIdx)
str.append("Read [" + idx + "]\t" + value + "\n");
else
str.append("Read:\t" + value + "\n");
} else {
if(printIdx)
str.append("Set [" + idx + "]\t" + value + "\n");
else
str.append("Set:\t" + value + "\n");
}
}
private String extractData(DeviceAttribute data,AttributeInfo ai) {
StringBuffer ret_string = new StringBuffer();
try {
// Add the date of the measure in two formats
TimeVal t = data.getTimeVal();
java.util.Date date = new java.util.Date((long) (t.tv_sec * 1000.0 + t.tv_usec / 1000.0));
SimpleDateFormat dateformat =
new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
dateformat.setTimeZone(TimeZone.getDefault());
ret_string.append("measure date: " + dateformat.format(date) + " + " + (t.tv_usec/1000) + "ms\n");
// Add the quality information
AttrQuality q = data.getQuality();
ret_string.append("quality: ");
switch (q.value()) {
case AttrQuality._ATTR_VALID:
ret_string.append("VALID\n");
break;
case AttrQuality._ATTR_INVALID:
ret_string.append("INVALID\n");
return ret_string.toString();
case AttrQuality._ATTR_ALARM:
ret_string.append("ALARM\n");
break;
case AttrQuality._ATTR_CHANGING:
ret_string.append("CHANGING\n");
break;
case AttrQuality._ATTR_WARNING:
ret_string.append("WARNING\n");
break;
default:
ret_string.append("UNKNOWN\n");
break;
}
// Add dimension of the attribute but only if having a meaning
boolean printIndex = true;
boolean checkLimit = true;
switch (ai.data_format.value()) {
case AttrDataFormat._SCALAR:
printIndex = false;
checkLimit = false;
break;
case AttrDataFormat._SPECTRUM:
ret_string.append("dim x: " + data.getDimX() + "\n");
break;
case AttrDataFormat._IMAGE:
ret_string.append("dim x: " + data.getDimX() + "\n");
ret_string.append("dim y: " + data.getDimY() + "\n");
break;
default:
break;
}
// Add values
switch (ai.data_type) {
case Tango_DEV_STATE:
{
DevState[] dummy = data.extractDevStateArray();
int nbRead = data.getNbRead();
int nbWritten = dummy.length - nbRead;
int start = getLimitMin(checkLimit,ret_string,nbRead);
int end = getLimitMax(checkLimit,ret_string,nbRead,false);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Tango_DevStateName[dummy[i].value()],false);
if( isWritable(ai) ) {
start = getLimitMin(checkLimit,ret_string,nbWritten);
end = getLimitMax(checkLimit,ret_string,nbWritten,true);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Tango_DevStateName[dummy[i+nbRead].value()],true);
}
}
break;
case Tango_DEV_UCHAR:
{
short[] dummy = data.extractUCharArray();
int nbRead = data.getNbRead();
int nbWritten = dummy.length - nbRead;
int start = getLimitMin(checkLimit,ret_string,nbRead);
int end = getLimitMax(checkLimit,ret_string,nbRead,false);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Short.toString(dummy[i]),false);
if( isWritable(ai) ) {
start = getLimitMin(checkLimit,ret_string,nbWritten);
end = getLimitMax(checkLimit,ret_string,nbWritten,true);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Short.toString(dummy[i+nbRead]),true);
}
}
break;
case Tango_DEV_SHORT:
{
short[] dummy = data.extractShortArray();
int nbRead = data.getNbRead();
int nbWritten = dummy.length - nbRead;
int start = getLimitMin(checkLimit,ret_string,nbRead);
int end = getLimitMax(checkLimit,ret_string,nbRead,false);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Short.toString(dummy[i]),false);
if( isWritable(ai) ) {
start = getLimitMin(checkLimit,ret_string,nbWritten);
end = getLimitMax(checkLimit,ret_string,nbWritten,true);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Short.toString(dummy[i+nbRead]),true);
}
}
break;
case Tango_DEV_BOOLEAN:
{
boolean[] dummy = data.extractBooleanArray();
int nbRead = data.getNbRead();
int nbWritten = dummy.length - nbRead;
int start = getLimitMin(checkLimit,ret_string,nbRead);
int end = getLimitMax(checkLimit,ret_string,nbRead,false);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Boolean.toString(dummy[i]),false);
if( isWritable(ai) ) {
start = getLimitMin(checkLimit,ret_string,nbWritten);
end = getLimitMax(checkLimit,ret_string,nbWritten,true);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Boolean.toString(dummy[i+nbRead]),true);
}
}
break;
case Tango_DEV_USHORT:
{
int[] dummy = data.extractUShortArray();
int nbRead = data.getNbRead();
int nbWritten = dummy.length - nbRead;
int start = getLimitMin(checkLimit,ret_string,nbRead);
int end = getLimitMax(checkLimit,ret_string,nbRead,false);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Integer.toString(dummy[i]),false);
if( isWritable(ai) ) {
start = getLimitMin(checkLimit,ret_string,nbWritten);
end = getLimitMax(checkLimit,ret_string,nbWritten,true);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Integer.toString(dummy[i+nbRead]),true);
}
}
break;
case Tango_DEV_LONG:
{
int[] dummy = data.extractLongArray();
int nbRead = data.getNbRead();
int nbWritten = dummy.length - nbRead;
int start = getLimitMin(checkLimit,ret_string,nbRead);
int end = getLimitMax(checkLimit,ret_string,nbRead,false);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Integer.toString(dummy[i]),false);
if( isWritable(ai) ) {
start = getLimitMin(checkLimit,ret_string,nbWritten);
end = getLimitMax(checkLimit,ret_string,nbWritten,true);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Integer.toString(dummy[i+nbRead]),true);
}
}
break;
case Tango_DEV_ULONG:
{
long[] dummy = data.extractULongArray();
int nbRead = data.getNbRead();
int nbWritten = dummy.length - nbRead;
int start = getLimitMin(checkLimit,ret_string,nbRead);
int end = getLimitMax(checkLimit,ret_string,nbRead,false);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Long.toString(dummy[i]),false);
if( isWritable(ai) ) {
start = getLimitMin(checkLimit,ret_string,nbWritten);
end = getLimitMax(checkLimit,ret_string,nbWritten,true);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Long.toString(dummy[i+nbRead]),true);
}
}
break;
case Tango_DEV_LONG64:
{
long[] dummy = data.extractLong64Array();
int nbRead = data.getNbRead();
int nbWritten = dummy.length - nbRead;
int start = getLimitMin(checkLimit,ret_string,nbRead);
int end = getLimitMax(checkLimit,ret_string,nbRead,false);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Long.toString(dummy[i]),false);
if( isWritable(ai) ) {
start = getLimitMin(checkLimit,ret_string,nbWritten);
end = getLimitMax(checkLimit,ret_string,nbWritten,true);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Long.toString(dummy[i+nbRead]),true);
}
}
break;
case Tango_DEV_ULONG64:
{
long[] dummy = data.extractULong64Array();
int nbRead = data.getNbRead();
int nbWritten = dummy.length - nbRead;
int start = getLimitMin(checkLimit,ret_string,nbRead);
int end = getLimitMax(checkLimit,ret_string,nbRead,false);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Long.toString(dummy[i]),false);
if( isWritable(ai) ) {
start = getLimitMin(checkLimit,ret_string,nbWritten);
end = getLimitMax(checkLimit,ret_string,nbWritten,true);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Long.toString(dummy[i+nbRead]),true);
}
}
break;
case Tango_DEV_DOUBLE:
{
double[] dummy = data.extractDoubleArray();
int nbRead = data.getNbRead();
int nbWritten = dummy.length - nbRead;
int start = getLimitMin(checkLimit,ret_string,nbRead);
int end = getLimitMax(checkLimit,ret_string,nbRead,false);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Double.toString(dummy[i]),false);
if( isWritable(ai) ) {
start = getLimitMin(checkLimit,ret_string,nbWritten);
end = getLimitMax(checkLimit,ret_string,nbWritten,true);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Double.toString(dummy[i+nbRead]),true);
}
}
break;
case Tango_DEV_FLOAT:
{
float[] dummy = data.extractFloatArray();
int nbRead = data.getNbRead();
int nbWritten = dummy.length - nbRead;
int start = getLimitMin(checkLimit,ret_string,nbRead);
int end = getLimitMax(checkLimit,ret_string,nbRead,false);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Float.toString(dummy[i]),false);
if( isWritable(ai) ) {
start = getLimitMin(checkLimit,ret_string,nbWritten);
end = getLimitMax(checkLimit,ret_string,nbWritten,true);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,Float.toString(dummy[i+nbRead]),true);
}
}
break;
case Tango_DEV_STRING:
{
String[] dummy = data.extractStringArray();
int nbRead = data.getNbRead();
int nbWritten = dummy.length - nbRead;
int start = getLimitMin(checkLimit,ret_string,nbRead);
int end = getLimitMax(checkLimit,ret_string,nbRead,false);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,dummy[i],false);
if( isWritable(ai) ) {
start = getLimitMin(checkLimit,ret_string,nbWritten);
end = getLimitMax(checkLimit,ret_string,nbWritten,true);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,dummy[i+nbRead],true);
}
}
break;
case Tango_DEV_ENCODED:
{
printIndex = true;
DevEncoded e = data.extractDevEncoded();
ret_string.append("Format: " + e.encoded_format + "\n");
int nbRead = e.encoded_data.length;
int start = getLimitMin(checkLimit,ret_string,nbRead);
int end = getLimitMax(checkLimit,ret_string,nbRead,false);
for (int i = start; i < end; i++) {
short vs = (short)e.encoded_data[i];
vs = (short)(vs & 0xFF);
printArrayItem(ret_string,i,printIndex,Short.toString(vs),false);
}
}
break;
case Tango_DEV_ENUM:
// We need the labels definition
AttributeInfoEx info = device.get_attribute_info_ex(ai.name);
short[] dummy = data.extractShortArray();
int nbRead = data.getNbRead();
int nbWritten = dummy.length - nbRead;
int start = getLimitMin(checkLimit,ret_string,nbRead);
int end = getLimitMax(checkLimit,ret_string,nbRead,false);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,info.getEnumLabel(dummy[i]),false);
if( isWritable(ai) ) {
start = getLimitMin(checkLimit,ret_string,nbWritten);
end = getLimitMax(checkLimit,ret_string,nbWritten,true);
for (int i = start; i < end; i++)
printArrayItem(ret_string,i,printIndex,info.getEnumLabel(dummy[i + nbRead]),true);
}
break;
default:
ret_string.append("Unsupported attribute type code="+ai.data_type+"\n");
break;
}
} catch (DevFailed e) {
ErrorPane.showErrorMessage(this,device.name() + "/" + ai.name,e);
}
return ret_string.toString();
}
private double[] extractSpectrumPlotData(DeviceAttribute data,AttributeInfo ai) {
double[] ret = new double[0];
int i;
try {
int start = getLimitMinForPlot(data.getNbRead());
int end = getLimitMaxForPlot(data.getNbRead());
switch (ai.data_type) {
case Tango_DEV_UCHAR:
{
short[] dummy = data.extractUCharArray();
ret = new double[end-start];
for(i=start;i
© 2015 - 2025 Weber Informatics LLC | Privacy Policy