diff options
author | rbrooks | 2010-07-24 17:38:31 +0000 |
---|---|---|
committer | rbrooks | 2010-07-24 17:38:31 +0000 |
commit | 4081f04850d3eff9eb1bd7241763707bfbb43a45 (patch) | |
tree | 258620df94d4b24077ff103a6c4dea9cb78493fb /plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse | |
parent | 4ed8bddc791fda93940f238c5135556a07041dc0 (diff) | |
download | org.eclipse.osee-4081f04850d3eff9eb1bd7241763707bfbb43a45.tar.gz org.eclipse.osee-4081f04850d3eff9eb1bd7241763707bfbb43a45.tar.xz org.eclipse.osee-4081f04850d3eff9eb1bd7241763707bfbb43a45.zip |
applied Eclipse source cleanup
Diffstat (limited to 'plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse')
13 files changed, 1038 insertions, 1019 deletions
diff --git a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/MuxToolPlugin.java b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/MuxToolPlugin.java index 6da97c56a77..43483753692 100644 --- a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/MuxToolPlugin.java +++ b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/MuxToolPlugin.java @@ -21,60 +21,58 @@ import org.osgi.util.tracker.ServiceTracker; */ public class MuxToolPlugin extends AbstractUIPlugin { - private ServiceTracker oteClientServiceTracker; + private ServiceTracker oteClientServiceTracker; - // The shared instance. - private static MuxToolPlugin plugin; + // The shared instance. + private static MuxToolPlugin plugin; - - public static String PLUGIN_ID = "org.eclipse.osee.ote.ui.mux"; - /** - * The constructor. - */ - public MuxToolPlugin() { - plugin = this; - } + public static String PLUGIN_ID = "org.eclipse.osee.ote.ui.mux"; - /** - * This method is called upon plug-in activation - */ - public void start(BundleContext context) throws Exception { - super.start(context); - oteClientServiceTracker = new ServiceTracker(context, - IOteClientService.class.getName(), null); - oteClientServiceTracker.open(); - } + /** + * The constructor. + */ + public MuxToolPlugin() { + plugin = this; + } - /** - * This method is called when the plug-in is stopped - */ - public void stop(BundleContext context) throws Exception { - super.stop(context); - plugin = null; - oteClientServiceTracker.close(); - } + /** + * This method is called upon plug-in activation + */ + @Override + public void start(BundleContext context) throws Exception { + super.start(context); + oteClientServiceTracker = new ServiceTracker(context, IOteClientService.class.getName(), null); + oteClientServiceTracker.open(); + } - /** - * Returns the shared instance. - */ - public static MuxToolPlugin getDefault() { - return plugin; - } + /** + * This method is called when the plug-in is stopped + */ + @Override + public void stop(BundleContext context) throws Exception { + super.stop(context); + plugin = null; + oteClientServiceTracker.close(); + } - /** - * Returns an image descriptor for the image file at the given plug-in - * relative path. - * - * @param path - * the path - * @return the image descriptor - */ - public static ImageDescriptor getImageDescriptor(String path) { - return AbstractUIPlugin.imageDescriptorFromPlugin( - "org.eclipse.osee.ote.ui.mux", path); - } - - public IOteClientService getOteClientService() { - return (IOteClientService) oteClientServiceTracker.getService(); - } + /** + * Returns the shared instance. + */ + public static MuxToolPlugin getDefault() { + return plugin; + } + + /** + * Returns an image descriptor for the image file at the given plug-in relative path. + * + * @param path the path + * @return the image descriptor + */ + public static ImageDescriptor getImageDescriptor(String path) { + return AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.osee.ote.ui.mux", path); + } + + public IOteClientService getOteClientService() { + return (IOteClientService) oteClientServiceTracker.getService(); + } } diff --git a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/actions/OpenMuxViewAction.java b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/actions/OpenMuxViewAction.java index f15b84790af..ba80dd957cb 100644 --- a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/actions/OpenMuxViewAction.java +++ b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/actions/OpenMuxViewAction.java @@ -18,17 +18,17 @@ import org.eclipse.ui.PlatformUI; public class OpenMuxViewAction extends Action { - public OpenMuxViewAction() { - super("Open Mux View"); - } + public OpenMuxViewAction() { + super("Open Mux View"); + } - @Override - public void run() { - try { - PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(MuxView.VIEW_ID); - } catch (Exception e) { - MessageDialog.openError(Displays.getActiveShell(), "Error", "got an exception"); - } - } + @Override + public void run() { + try { + PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(MuxView.VIEW_ID); + } catch (Exception e) { + MessageDialog.openError(Displays.getActiveShell(), "Error", "got an exception"); + } + } } diff --git a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/datatable/DataNode.java b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/datatable/DataNode.java index 3dc89eec929..445b373909a 100644 --- a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/datatable/DataNode.java +++ b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/datatable/DataNode.java @@ -26,26 +26,31 @@ public class DataNode { row4 = new RowNode(); temp = new byte[16]; } - + public RowNode getRow(int row) { switch (row) { - case 1: return row1; - case 2: return row2; - case 3: return row3; - case 4: return row4; - default: return row1; + case 1: + return row1; + case 2: + return row2; + case 3: + return row3; + case 4: + return row4; + default: + return row1; } } - + public synchronized void setData(ByteBuffer data) { // discard header bytes - if (data.remaining() <= 15) + if (data.remaining() <= 15) { return; - else { + } else { temp = new byte[15]; data.get(temp, 0, 15); } - + int copySize = data.remaining() >= 16 ? 16 : data.remaining(); temp = new byte[copySize]; data.get(temp, 0, copySize); diff --git a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/datatable/DatawordContentProvider.java b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/datatable/DatawordContentProvider.java index 14038af831d..a83089ac1ba 100644 --- a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/datatable/DatawordContentProvider.java +++ b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/datatable/DatawordContentProvider.java @@ -16,7 +16,6 @@ import org.eclipse.osee.ote.ui.mux.model.DatawordModel; /** * @author Ky Komadino - * */ public class DatawordContentProvider implements IStructuredContentProvider { private final static Object[] EMPTY_ARRAY = new Object[0]; @@ -25,19 +24,21 @@ public class DatawordContentProvider implements IStructuredContentProvider { public void refresh() { viewer.refresh(); } - + + @Override public void inputChanged(Viewer v, Object oldInput, Object newInput) { viewer = v; } + @Override public void dispose() { } + @Override public Object[] getElements(Object parent) { if (parent instanceof DatawordModel) { - return ((DatawordModel)parent).getChildren(); - } - else { + return ((DatawordModel) parent).getChildren(); + } else { return EMPTY_ARRAY; } } diff --git a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/datatable/DatawordLabelProvider.java b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/datatable/DatawordLabelProvider.java index c493b914ee2..2218d34b671 100644 --- a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/datatable/DatawordLabelProvider.java +++ b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/datatable/DatawordLabelProvider.java @@ -17,26 +17,29 @@ import org.eclipse.swt.graphics.Image; /** * @author Ky Komadino - * */ public class DatawordLabelProvider extends LabelProvider implements ITableLabelProvider { + @Override public String getColumnText(Object obj, int index) { if (obj != null && obj instanceof RowNode) { - if (index >= 0 && index <= 7) - return String.valueOf(((RowNode)obj).getDataword(index)); - else + if (index >= 0 && index <= 7) { + return String.valueOf(((RowNode) obj).getDataword(index)); + } else { return ""; - } - else + } + } else { return ""; + } } + @Override public Image getColumnImage(Object obj, int index) { return getImage(obj); } + @Override public String getText(Object obj) { - return ((MessageNode)obj).getName(); + return ((MessageNode) obj).getName(); } } diff --git a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/datatable/RowNode.java b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/datatable/RowNode.java index 0fd69ec9bc4..a85b6d7d045 100644 --- a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/datatable/RowNode.java +++ b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/datatable/RowNode.java @@ -12,10 +12,9 @@ package org.eclipse.osee.ote.ui.mux.datatable; /** * @author Ky Komadino - * */ public class RowNode { - private byte[] databytes; + private final byte[] databytes; private int numDatabytes; public RowNode() { @@ -25,24 +24,26 @@ public class RowNode { public synchronized void setData(byte[] data) { numDatabytes = data.length; - for (int i = 0; i < data.length && i < databytes.length; i++) + for (int i = 0; i < data.length && i < databytes.length; i++) { databytes[i] = data[i]; + } } - + public synchronized void setDataword(int data, int index) { - databytes[index * 2] = (byte)((data & 0x0000FF00) >> 8); - databytes[index * 2 + 1] = (byte)(data & 0x000000FF); + databytes[index * 2] = (byte) ((data & 0x0000FF00) >> 8); + databytes[index * 2 + 1] = (byte) (data & 0x000000FF); } - + public synchronized byte getDatabyte(int index) { return databytes[index]; } public synchronized String getDataword(int index) { - if (numDatabytes > index * 2 + 1) - return String.format("%02X%02X", (short)(databytes[index * 2] & 0x00FF), - (short)(databytes[index * 2 + 1] & 0x00FF)); - else + if (numDatabytes > index * 2 + 1) { + return String.format("%02X%02X", (short) (databytes[index * 2] & 0x00FF), + (short) (databytes[index * 2 + 1] & 0x00FF)); + } else { return ""; + } } } diff --git a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/model/DatawordModel.java b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/model/DatawordModel.java index c0632fba096..da2ba106b56 100644 --- a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/model/DatawordModel.java +++ b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/model/DatawordModel.java @@ -17,18 +17,17 @@ import org.eclipse.osee.ote.ui.mux.datatable.DataNode; /** * @author Ky Komadino - * */ public class DatawordModel { private final static Object[] EMPTY_ARRAY = new Object[0]; - private HashMap<String, DataNode> dataNodes; + private final HashMap<String, DataNode> dataNodes; private final CharBuffer buffer = ByteBuffer.allocate(16).asCharBuffer(); private String currentNode = null; - + public DatawordModel() { dataNodes = new HashMap<String, DataNode>(); }; - + /** * @param muxId - message ID * @param node - node to add to list @@ -36,15 +35,14 @@ public class DatawordModel { public void addNode(String muxId, DataNode node) { dataNodes.put(muxId, node); } - + /** - * * @param node - currently selected node */ public void setCurrentNode(String node) { currentNode = node; } - + /** * @return - values in list */ @@ -56,18 +54,18 @@ public class DatawordModel { } return EMPTY_ARRAY; } - + public void removeDatawords() { dataNodes.clear(); } - + public void onDataAvailable(ByteBuffer data) { buffer.clear(); - buffer.append(String.format("%02d", ((short)(data.array()[1] & 0x00F8)) >> 3)); + buffer.append(String.format("%02d", (short) (data.array()[1] & 0x00F8) >> 3)); final char transmitReceive = (data.array()[1] & 0x04) >> 2 == 1 ? 'T' : 'R'; buffer.append(transmitReceive); - buffer.append(String.format("%02d", (((short)(data.array()[1] & 0x0003)) << 3) + - (((short)(data.array()[2] & 0x00E0)) >> 5))); + buffer.append(String.format("%02d", + ((short) (data.array()[1] & 0x0003) << 3) + ((short) (data.array()[2] & 0x00E0) >> 5))); String muxId = buffer.flip().toString(); DataNode receiveData = dataNodes.get(muxId); if (receiveData == null) { diff --git a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/model/MessageModel.java b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/model/MessageModel.java index a0ca16e7ed0..cc3ffb85eeb 100644 --- a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/model/MessageModel.java +++ b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/model/MessageModel.java @@ -20,9 +20,9 @@ import org.eclipse.osee.ote.ui.mux.msgtable.MessageNode; * @author Ky Komadino */ public class MessageModel { - private HashMap<String, MessageNode> messageNodes; + private final HashMap<String, MessageNode> messageNodes; private final CharBuffer buffer = ByteBuffer.allocate(16).asCharBuffer(); - + public MessageModel() { messageNodes = new HashMap<String, MessageNode>(); }; @@ -34,29 +34,30 @@ public class MessageModel { public void addNode(String muxId, MessageNode node) { messageNodes.put(muxId, node); } - + /** * @return - values in list */ public Collection<MessageNode> getChildren() { return messageNodes.values(); } - + public void removeMessages() { messageNodes.clear(); } - + public void onDataAvailable(ByteBuffer data) { // if this is the "T" side of an RT-RT message, then discard - if ((data.array()[1] & 0x04) >> 2 == 1 && data.array()[3] != 0 && data.array()[4] != 0) + if ((data.array()[1] & 0x04) >> 2 == 1 && data.array()[3] != 0 && data.array()[4] != 0) { return; - + } + buffer.clear(); - buffer.append(String.format("%02d", ((short)(data.array()[1] & 0x00F8)) >> 3)); + buffer.append(String.format("%02d", (short) (data.array()[1] & 0x00F8) >> 3)); final char transmitReceive = (data.array()[1] & 0x04) >> 2 == 1 ? 'T' : 'R'; buffer.append(transmitReceive); - buffer.append(String.format("%02d", (((short)(data.array()[1] & 0x0003)) << 3) + - (((short)(data.array()[2] & 0x00E0)) >> 5))); + buffer.append(String.format("%02d", + ((short) (data.array()[1] & 0x0003) << 3) + ((short) (data.array()[2] & 0x00E0) >> 5))); String muxId = buffer.flip().toString(); MessageNode receiveMessage = messageNodes.get(muxId); if (receiveMessage == null) { diff --git a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/msgtable/MessageNode.java b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/msgtable/MessageNode.java index dbaa383193e..afd50cbe9a1 100644 --- a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/msgtable/MessageNode.java +++ b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/msgtable/MessageNode.java @@ -29,78 +29,81 @@ public class MessageNode { private int activity; private int errCount; private String errType; - private CharBuffer temp = ByteBuffer.allocate(32).asCharBuffer(); + private final CharBuffer temp = ByteBuffer.allocate(32).asCharBuffer(); public MessageNode(String muxId) { this.name = muxId; } /** - * * @param data - raw mux data from 1553 driver */ public synchronized void setData(ByteBuffer data) { - if (data.array()[3] == 0 && data.array()[4] == 0) { // not an RT-RT msg - rt = ((short)(data.array()[1] & 0x00F8)) >> 3; - transmitReceive = ((short)(data.array()[1] & 0x0004)) >> 2; - subaddress = (((short)(data.array()[1] & 0x0003)) << 3) + (((short)(data.array()[2] & 0x00E0)) >> 5); + if (data.array()[3] == 0 && data.array()[4] == 0) { // not an RT-RT msg + rt = (short) (data.array()[1] & 0x00F8) >> 3; + transmitReceive = (short) (data.array()[1] & 0x0004) >> 2; + subaddress = ((short) (data.array()[1] & 0x0003) << 3) + ((short) (data.array()[2] & 0x00E0) >> 5); temp.clear(); temp.append(String.format(" ")); rtRt = temp.flip().toString(); - } - else { // is an RT-RT msg, reference the "T" side datawords - rt = ((short)(data.array()[3] & 0x00F8)) >> 3; - transmitReceive = ((short)(data.array()[3] & 0x0004)) >> 2; - subaddress = (((short)(data.array()[3] & 0x0003)) << 3) + (((short)(data.array()[4] & 0x00E0)) >> 5); + } else { // is an RT-RT msg, reference the "T" side datawords + rt = (short) (data.array()[3] & 0x00F8) >> 3; + transmitReceive = (short) (data.array()[3] & 0x0004) >> 2; + subaddress = ((short) (data.array()[3] & 0x0003) << 3) + ((short) (data.array()[4] & 0x00E0) >> 5); temp.clear(); - temp.append(String.format("%02d", ((short)(data.array()[3] & 0x00F8)) >> 3)); + temp.append(String.format("%02d", (short) (data.array()[3] & 0x00F8) >> 3)); temp.append((data.array()[3] & 0x0004) >> 2 == 1 ? 'T' : 'R'); - temp.append(String.format("%02d", (((short)(data.array()[3] & 0x0003)) << 3) + - (((short)(data.array()[4] & 0x00E0)) >> 5))); + temp.append(String.format("%02d", + ((short) (data.array()[3] & 0x0003) << 3) + ((short) (data.array()[4] & 0x00E0) >> 5))); rtRt = temp.flip().toString(); } - - if (subaddress == 0 || subaddress == 31) - wordCount = (short)(data.array()[2] & 0x001F) >= 16 ? 1 : 0; - else - wordCount = (short)(data.array()[2] & 0x001F) == 0 ? 32 : (short)(data.array()[2] & 0x001F); - + + if (subaddress == 0 || subaddress == 31) { + wordCount = (short) (data.array()[2] & 0x001F) >= 16 ? 1 : 0; + } else { + wordCount = (short) (data.array()[2] & 0x001F) == 0 ? 32 : (short) (data.array()[2] & 0x001F); + } + temp.clear(); temp.append(String.format("0x%02X%02X", data.array()[5], data.array()[6])); statusWord = temp.flip().toString(); - + temp.clear(); - switch (((short)(data.array()[9] & 0x00C0)) >> 6) { - case 1: temp.append("-/B"); - break; - case 2: temp.append("A/-"); - break; - case 3: temp.append("A/B"); - break; - default: temp.append("MON"); + switch ((short) (data.array()[9] & 0x00C0) >> 6) { + case 1: + temp.append("-/B"); + break; + case 2: + temp.append("A/-"); + break; + case 3: + temp.append("A/B"); + break; + default: + temp.append("MON"); } emulation = temp.flip().toString(); - + temp.clear(); - if ((short)(data.array()[10] & 0x0008) == 0) + if ((short) (data.array()[10] & 0x0008) == 0) { temp.append(String.format("PRI")); - else + } else { temp.append(String.format("SEC")); + } bus = temp.flip().toString(); - + activity++; - + temp.clear(); - if ((short)(data.array()[10] & 0x0080) == 0) { + if ((short) (data.array()[10] & 0x0080) == 0) { temp.append(" "); - } - else { + } else { errCount++; temp.append("NO RESPONSE"); } errType = temp.flip().toString(); } - + /** * @return Returns the activity. */ @@ -149,7 +152,7 @@ public class MessageNode { public synchronized int getRt() { return rt; } - + /** * @return Returns the rtRt. */ @@ -170,14 +173,14 @@ public class MessageNode { public synchronized int getSubaddress() { return subaddress; } - + /** * @return Returns the transmitReceive. */ public synchronized int getTransmitReceive() { return transmitReceive; } - + /** * @return Returns the wordCount. */ diff --git a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/msgtable/MuxMsgContentProvider.java b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/msgtable/MuxMsgContentProvider.java index efdfc066642..e6e0a61a4bf 100644 --- a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/msgtable/MuxMsgContentProvider.java +++ b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/msgtable/MuxMsgContentProvider.java @@ -16,7 +16,6 @@ import org.eclipse.osee.ote.ui.mux.model.MessageModel; /** * @author Ky Komadino - * */ public class MuxMsgContentProvider implements IStructuredContentProvider { private final static Object[] EMPTY_ARRAY = new Object[0]; @@ -25,19 +24,21 @@ public class MuxMsgContentProvider implements IStructuredContentProvider { public void refresh() { viewer.refresh(); } - + + @Override public void inputChanged(Viewer v, Object oldInput, Object newInput) { viewer = v; } + @Override public void dispose() { } + @Override public Object[] getElements(Object parent) { if (parent instanceof MessageModel) { - return ((MessageModel)parent).getChildren().toArray(); - } - else { + return ((MessageModel) parent).getChildren().toArray(); + } else { return EMPTY_ARRAY; } } diff --git a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/msgtable/MuxMsgLabelProvider.java b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/msgtable/MuxMsgLabelProvider.java index aeaec4a54de..a501eae2463 100644 --- a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/msgtable/MuxMsgLabelProvider.java +++ b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/msgtable/MuxMsgLabelProvider.java @@ -16,43 +16,45 @@ import org.eclipse.swt.graphics.Image; /** * @author Ky Komadino - * */ public class MuxMsgLabelProvider extends LabelProvider implements ITableLabelProvider { + @Override public String getColumnText(Object obj, int index) { if (obj != null && obj instanceof MessageNode) { switch (index) { case 0: - return ((MessageNode)obj).getName(); + return ((MessageNode) obj).getName(); case 1: - return ((MessageNode)obj).getRtRt(); + return ((MessageNode) obj).getRtRt(); case 2: - return String.valueOf(((MessageNode)obj).getWordCount()); + return String.valueOf(((MessageNode) obj).getWordCount()); case 3: - return ((MessageNode)obj).getStatusWord(); + return ((MessageNode) obj).getStatusWord(); case 4: - return ((MessageNode)obj).getEmulation(); + return ((MessageNode) obj).getEmulation(); case 5: - return ((MessageNode)obj).getBus(); + return ((MessageNode) obj).getBus(); case 6: - return String.valueOf(((MessageNode)obj).getActivity()); + return String.valueOf(((MessageNode) obj).getActivity()); case 7: - return String.valueOf(((MessageNode)obj).getErrCount()); + return String.valueOf(((MessageNode) obj).getErrCount()); case 8: - return ((MessageNode)obj).getErrType(); + return ((MessageNode) obj).getErrType(); default: return ""; } - } - else + } else { return ""; + } } + @Override public Image getColumnImage(Object obj, int index) { return getImage(obj); } + @Override public String getText(Object obj) { - return ((MessageNode)obj).getName(); + return ((MessageNode) obj).getName(); } } diff --git a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/view/IRegistrationListener.java b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/view/IRegistrationListener.java index 115f5dd683e..936a1013bfe 100644 --- a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/view/IRegistrationListener.java +++ b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/view/IRegistrationListener.java @@ -12,17 +12,17 @@ package org.eclipse.osee.ote.ui.mux.view; import java.rmi.Remote; import java.rmi.RemoteException; - import org.eclipse.osee.ote.message.IInstrumentationRegistrationListener; import org.eclipse.osee.ote.message.instrumentation.IOInstrumentation; /** * @author Ken J. Aguilar - * */ public interface IRegistrationListener extends Remote, IInstrumentationRegistrationListener { - void onRegistered(String name, IOInstrumentation instrumentation) throws RemoteException; + @Override + void onRegistered(String name, IOInstrumentation instrumentation) throws RemoteException; - void onDeregistered(String name) throws RemoteException; + @Override + void onDeregistered(String name) throws RemoteException; } diff --git a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/view/MuxView.java b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/view/MuxView.java index e38c1a4513d..fc0c124fa97 100644 --- a/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/view/MuxView.java +++ b/plugins/org.eclipse.osee.ote.ui.mux/src/org/eclipse/osee/ote/ui/mux/view/MuxView.java @@ -90,844 +90,850 @@ import org.eclipse.ui.part.ViewPart; */ public class MuxView extends ViewPart implements ITestConnectionListener, IInstrumentationRegistrationListener, Remote { - private TableViewer msgViewer1, msgViewer2, msgViewer3, msgViewer5; - private TableViewer dataViewer1, dataViewer2, dataViewer3, dataViewer5; - private MessageModel chan1Msgs, chan2Msgs, chan3Msgs, chan5Msgs; - private DatawordModel chan1Dwrds, chan2Dwrds, chan3Dwrds, chan5Dwrds; - private IOInstrumentation muxProbe; - private PeriodicDisplayTask task; - private ListenerThread thread; - private int port; - private int selectedChannel; - private int selectedRt; - private int selectedTR; - private int selectedSubaddr; - private final static Color GRAY = Displays.getSystemColor(SWT.COLOR_GRAY); - private final static Color WHITE = Displays.getSystemColor(SWT.COLOR_WHITE); - - private IInstrumentationRegistrationListener exportedThis; - - public static final String VIEW_ID = "osee.test.muxTool.views.MuxView"; - class NameSorter extends ViewerSorter { - } - - /** - * The constructor. - */ - public MuxView() { - super(); - } - - /** - * This is a callback that will allow us to create the viewers and initialize them. - */ - @Override - public void createPartControl(Composite parent) { - final TabFolder tabFolder = new TabFolder(parent, SWT.WRAP); - tabFolder.addSelectionListener(new SelectionListener() { - public void widgetSelected(SelectionEvent e) { - switch (tabFolder.getSelectionIndex()) { - case 0: - selectedChannel = 1; - break; - case 1: - selectedChannel = 2; - break; - case 2: - selectedChannel = 3; - break; - case 3: - selectedChannel = 5; - break; - default: - selectedChannel = 1; - } - } - - public void widgetDefaultSelected(SelectionEvent e) { - } - }); - - // Setup Channel 1 display - TabItem chan1Tab = new TabItem(tabFolder, SWT.NONE); - chan1Tab.setText("Channel 1"); - Composite chan1TabComp = new Composite(tabFolder, SWT.NONE); - chan1Tab.setControl(chan1TabComp); - GridLayout chan1Layout = new GridLayout(1, false); - chan1TabComp.setLayout(chan1Layout); - - msgViewer1 = new TableViewer(chan1TabComp, SWT.BORDER | SWT.FULL_SELECTION); - msgViewer1.setLabelProvider(new MuxMsgLabelProvider()); - msgViewer1.setSorter(new NameSorter()); - msgViewer1.setContentProvider(new MuxMsgContentProvider()); - - createMsgTable(msgViewer1); - - Composite bottom1 = new Composite(chan1TabComp, SWT.NONE); - bottom1.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - bottom1.setLayout(new GridLayout(2, false)); - - Composite data1 = new Composite(bottom1, SWT.NONE); - RowLayout dataLayout1 = new RowLayout(SWT.HORIZONTAL); - data1.setLayout(dataLayout1); - - Composite labels1 = new Composite(data1, SWT.NONE); - RowLayout labelLayout1 = new RowLayout(SWT.VERTICAL); - labelLayout1.marginTop = 5; - labelLayout1.spacing = 1; - labels1.setLayout(labelLayout1); - Label label1_1 = new Label(labels1, SWT.NONE); - label1_1.setText("Datawords 1-8"); - Label label2_1 = new Label(labels1, SWT.NONE); - label2_1.setText("Datawords 9-16"); - Label label3_1 = new Label(labels1, SWT.NONE); - label3_1.setText("Datawords 17-24"); - Label label4_1 = new Label(labels1, SWT.NONE); - label4_1.setText("Datawords 25-32"); - - Composite datawords1 = new Composite(data1, SWT.NONE); - datawords1.setLayout(new GridLayout(1, false)); - dataViewer1 = new TableViewer(datawords1, SWT.BORDER | SWT.FULL_SELECTION); - dataViewer1.setContentProvider(new DatawordContentProvider()); - dataViewer1.setLabelProvider(new DatawordLabelProvider()); - createDwordTable(dataViewer1); - msgViewer1.addSelectionChangedListener(new ISelectionChangedListener() { - public void selectionChanged(SelectionChangedEvent event) { - IStructuredSelection selection = (IStructuredSelection) event.getSelection(); - MessageNode node = (MessageNode) selection.getFirstElement(); - if (node != null) { - selectedRt = node.getRt(); - selectedTR = node.getTransmitReceive(); - selectedSubaddr = node.getSubaddress(); - chan1Dwrds.setCurrentNode(node.getName()); - } - } - }); - final Button reset1 = new Button(bottom1, SWT.PUSH); - reset1.setText("Reset Display"); - reset1.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.GRAB_HORIZONTAL)); - reset1.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - selectedRt = 0; - selectedTR = 0; - selectedSubaddr = 0; - chan1Msgs.removeMessages(); - chan1Dwrds.setCurrentNode(null); - } - }); - - // Setup Channel 2 display - TabItem chan2Tab = new TabItem(tabFolder, SWT.NONE); - chan2Tab.setText("Channel 2"); - Composite chan2TabComp = new Composite(tabFolder, SWT.NONE); - chan2Tab.setControl(chan2TabComp); - GridLayout chan2Layout = new GridLayout(1, false); - chan2TabComp.setLayout(chan2Layout); - msgViewer2 = new TableViewer(chan2TabComp, SWT.BORDER | SWT.FULL_SELECTION); - msgViewer2.setContentProvider(new MuxMsgContentProvider()); - msgViewer2.setLabelProvider(new MuxMsgLabelProvider()); - msgViewer2.setSorter(new NameSorter()); - createMsgTable(msgViewer2); - Composite bottom2 = new Composite(chan2TabComp, SWT.NONE); - bottom2.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - bottom2.setLayout(new GridLayout(2, false)); - - Composite data2 = new Composite(bottom2, SWT.NONE); - RowLayout dataLayout2 = new RowLayout(SWT.HORIZONTAL); - data2.setLayout(dataLayout2); - - Composite labels2 = new Composite(data2, SWT.NONE); - RowLayout lableLayout2 = new RowLayout(SWT.VERTICAL); - lableLayout2.marginTop = 5; - lableLayout2.spacing = 1; - labels2.setLayout(lableLayout2); - Label label1_2 = new Label(labels2, SWT.NONE); - label1_2.setText("Datawords 1-8"); - Label label2_2 = new Label(labels2, SWT.NONE); - label2_2.setText("Datawords 9-16"); - Label label3_2 = new Label(labels2, SWT.NONE); - label3_2.setText("Datawords 17-24"); - Label label4_2 = new Label(labels2, SWT.NONE); - label4_2.setText("Datawords 25-32"); - - Composite datawords2 = new Composite(data2, SWT.NONE); - datawords2.setLayout(new GridLayout(1, false)); - dataViewer2 = new TableViewer(datawords2, SWT.BORDER | SWT.FULL_SELECTION); - dataViewer2.setContentProvider(new DatawordContentProvider()); - dataViewer2.setLabelProvider(new DatawordLabelProvider()); - createDwordTable(dataViewer2); - msgViewer2.addSelectionChangedListener(new ISelectionChangedListener() { - public void selectionChanged(SelectionChangedEvent event) { - IStructuredSelection selection = (IStructuredSelection) event.getSelection(); - MessageNode node = (MessageNode) selection.getFirstElement(); - if (node != null) { - selectedRt = node.getRt(); - selectedTR = node.getTransmitReceive(); - selectedSubaddr = node.getSubaddress(); - chan2Dwrds.setCurrentNode(node.getName()); - } - } - }); - final Button reset2 = new Button(bottom2, SWT.PUSH); - reset2.setText("Reset Display"); - reset2.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.GRAB_HORIZONTAL)); - reset2.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - selectedRt = 0; - selectedTR = 0; - selectedSubaddr = 0; - chan2Msgs.removeMessages(); - chan2Dwrds.setCurrentNode(null); - } - }); - - // Setup Channel 3 display - TabItem chan3Tab = new TabItem(tabFolder, SWT.NONE); - chan3Tab.setText("Channel 3"); - Composite chan3TabComp = new Composite(tabFolder, SWT.NONE); - chan3Tab.setControl(chan3TabComp); - GridLayout chan3Layout = new GridLayout(1, false); - chan3TabComp.setLayout(chan3Layout); - msgViewer3 = new TableViewer(chan3TabComp, SWT.BORDER | SWT.FULL_SELECTION); - msgViewer3.setContentProvider(new MuxMsgContentProvider()); - msgViewer3.setLabelProvider(new MuxMsgLabelProvider()); - msgViewer3.setSorter(new NameSorter()); - createMsgTable(msgViewer3); - Composite bottom3 = new Composite(chan3TabComp, SWT.NONE); - bottom3.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - bottom3.setLayout(new GridLayout(2, false)); - - Composite data3 = new Composite(bottom3, SWT.NONE); - RowLayout dataLayout3 = new RowLayout(SWT.HORIZONTAL); - data3.setLayout(dataLayout3); - - Composite labels3 = new Composite(data3, SWT.NONE); - RowLayout lableLayout3 = new RowLayout(SWT.VERTICAL); - lableLayout3.marginTop = 5; - lableLayout3.spacing = 1; - labels3.setLayout(lableLayout3); - Label label1_3 = new Label(labels3, SWT.NONE); - label1_3.setText("Datawords 1-8"); - Label label2_3 = new Label(labels3, SWT.NONE); - label2_3.setText("Datawords 9-16"); - Label label3_3 = new Label(labels3, SWT.NONE); - label3_3.setText("Datawords 17-24"); - Label label4_3 = new Label(labels3, SWT.NONE); - label4_3.setText("Datawords 25-32"); - - Composite datawords3 = new Composite(data3, SWT.NONE); - datawords3.setLayout(new GridLayout(1, false)); - dataViewer3 = new TableViewer(datawords3, SWT.BORDER | SWT.FULL_SELECTION); - dataViewer3.setContentProvider(new DatawordContentProvider()); - dataViewer3.setLabelProvider(new DatawordLabelProvider()); - createDwordTable(dataViewer3); - msgViewer3.addSelectionChangedListener(new ISelectionChangedListener() { - public void selectionChanged(SelectionChangedEvent event) { - IStructuredSelection selection = (IStructuredSelection) event.getSelection(); - MessageNode node = (MessageNode) selection.getFirstElement(); - if (node != null) { - selectedRt = node.getRt(); - selectedTR = node.getTransmitReceive(); - selectedSubaddr = node.getSubaddress(); - chan3Dwrds.setCurrentNode(node.getName()); - } - } - }); - final Button reset3 = new Button(bottom3, SWT.PUSH); - reset3.setText("Reset Display"); - reset3.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.GRAB_HORIZONTAL)); - reset3.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - selectedRt = 0; - selectedTR = 0; - selectedSubaddr = 0; - chan3Msgs.removeMessages(); - chan3Dwrds.setCurrentNode(null); - } - }); - - // Setup Channel 5 display - TabItem chan5Tab = new TabItem(tabFolder, SWT.NONE); - chan5Tab.setText("Channel 5"); - Composite chan5TabComp = new Composite(tabFolder, SWT.NONE); - chan5Tab.setControl(chan5TabComp); - GridLayout chan5Layout = new GridLayout(1, false); - chan5TabComp.setLayout(chan5Layout); - msgViewer5 = new TableViewer(chan5TabComp, SWT.BORDER | SWT.FULL_SELECTION); - msgViewer5.setContentProvider(new MuxMsgContentProvider()); - msgViewer5.setLabelProvider(new MuxMsgLabelProvider()); - msgViewer5.setSorter(new NameSorter()); - createMsgTable(msgViewer5); - Composite bottom5 = new Composite(chan5TabComp, SWT.NONE); - bottom5.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - bottom5.setLayout(new GridLayout(2, false)); - - Composite data5 = new Composite(bottom5, SWT.NONE); - RowLayout dataLayout5 = new RowLayout(SWT.HORIZONTAL); - data5.setLayout(dataLayout5); - - Composite labels5 = new Composite(data5, SWT.NONE); - RowLayout lableLayout5 = new RowLayout(SWT.VERTICAL); - lableLayout5.marginTop = 5; - lableLayout5.spacing = 1; - labels5.setLayout(lableLayout5); - Label label1_5 = new Label(labels5, SWT.NONE); - label1_5.setText("Datawords 1-8"); - Label label2_5 = new Label(labels5, SWT.NONE); - label2_5.setText("Datawords 9-16"); - Label label3_5 = new Label(labels5, SWT.NONE); - label3_5.setText("Datawords 17-24"); - Label label4_5 = new Label(labels5, SWT.NONE); - label4_5.setText("Datawords 25-32"); - - Composite datawords5 = new Composite(data5, SWT.NONE); - datawords5.setLayout(new GridLayout(1, false)); - dataViewer5 = new TableViewer(datawords5, SWT.BORDER | SWT.FULL_SELECTION); - dataViewer5.setContentProvider(new DatawordContentProvider()); - dataViewer5.setLabelProvider(new DatawordLabelProvider()); - createDwordTable(dataViewer5); - msgViewer5.addSelectionChangedListener(new ISelectionChangedListener() { - public void selectionChanged(SelectionChangedEvent event) { - IStructuredSelection selection = (IStructuredSelection) event.getSelection(); - MessageNode node = (MessageNode) selection.getFirstElement(); - if (node != null) { - selectedRt = node.getRt(); - selectedTR = node.getTransmitReceive(); - selectedSubaddr = node.getSubaddress(); - chan5Dwrds.setCurrentNode(node.getName()); - } - } - }); - final Button reset5 = new Button(bottom5, SWT.PUSH); - reset5.setText("Reset Display"); - reset5.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.GRAB_HORIZONTAL)); - reset5.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - selectedRt = 0; - selectedTR = 0; - selectedSubaddr = 0; - chan5Msgs.removeMessages(); - chan5Dwrds.setCurrentNode(null); - } - }); - msgViewer1.setInput(chan1Msgs = new MessageModel()); - dataViewer1.setInput(chan1Dwrds = new DatawordModel()); - msgViewer2.setInput(chan2Msgs = new MessageModel()); - dataViewer2.setInput(chan2Dwrds = new DatawordModel()); - msgViewer3.setInput(chan3Msgs = new MessageModel()); - dataViewer3.setInput(chan3Dwrds = new DatawordModel()); - msgViewer5.setInput(chan5Msgs = new MessageModel()); - dataViewer5.setInput(chan5Dwrds = new DatawordModel()); - updateColors(false); - try { - thread = new ListenerThread(); - } catch (Exception e) { - OseeLog.log(MuxView.class, Level.SEVERE, "Mux View could not start listening thread", e); - MessageDialog.openError(parent.getShell(), "Error", "Mux View could not initialize. See Error Log for details"); - return; - } - thread.start(); - - task = new PeriodicDisplayTask(Display.getDefault(), 333) { - @Override - protected void update() { - try { - msgViewer1.refresh(); - dataViewer1.refresh(); - msgViewer2.refresh(); - dataViewer2.refresh(); - msgViewer3.refresh(); - dataViewer3.refresh(); - msgViewer5.refresh(); - dataViewer5.refresh(); - } catch (Throwable t) { - OseeLog.log(MuxToolPlugin.class, Level.SEVERE, "problems refreshing viewer", t); - stop(); - } - } - }; - task.start(); - PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, "org.eclipse.osee.ote.ui.mux.muxView"); - MuxToolPlugin.getDefault().getOteClientService().addConnectionListener(this); - } - - /** - * Create the Mux Message Tree - */ - private void createMsgTable(TableViewer parent) { - final Table table = parent.getTable(); - GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL); - int height = table.getItemHeight() * 20; - Rectangle trim = table.computeTrim(0, 0, 0, height); - gridData.heightHint = trim.height; - table.setLayoutData(gridData); - table.setHeaderVisible(true); - TableColumn column = new TableColumn(table, SWT.CENTER, 0); - column.setText("Message"); - column.setWidth(70); - column = new TableColumn(table, SWT.CENTER, 1); - column.setText("RT-RT"); - column.setWidth(60); - column = new TableColumn(table, SWT.CENTER, 2); - column.setText("Word Cnt"); - column.setWidth(70); - column = new TableColumn(table, SWT.CENTER, 3); - column.setText("StatusWd"); - column.setWidth(70); - column = new TableColumn(table, SWT.CENTER, 4); - column.setText("Emulation"); - column.setWidth(70); - column = new TableColumn(table, SWT.CENTER, 5); - column.setText("Bus"); - column.setWidth(50); - column = new TableColumn(table, SWT.CENTER, 6); - column.setText("Activity"); - column.setWidth(60); - column = new TableColumn(table, SWT.CENTER, 7); - column.setText("Error Cnt"); - column.setWidth(70); - column = new TableColumn(table, SWT.CENTER, 8); - column.setText("Error Type"); - column.setWidth(150); - - table.addMouseListener(new MouseAdapter() { - @Override - public void mouseDown(final MouseEvent event) { - if (event.button == 3) { - Menu menu = new Menu(table.getShell(), SWT.POP_UP); - MenuItem enableBoth = new MenuItem(menu, SWT.PUSH); - enableBoth.setText("Emulate RT (Pri + Sec)"); - enableBoth.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (muxProbe != null) { - byte[] cmd = new byte[4]; - cmd[0] = 'R'; // RT simulation cmd - cmd[1] = (byte) selectedChannel; - cmd[2] = (byte) selectedRt; - cmd[3] = (byte) 3; - try { - muxProbe.command(cmd); - } catch (RemoteException ex) { - OseeLog.log(MuxToolPlugin.class, Level.WARNING, - "MuxView unable to send RT simulation command"); - } - } - } - }); - MenuItem enableA = new MenuItem(menu, SWT.PUSH); - enableA.setText("Emulate RT (Pri Only)"); - enableA.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (muxProbe != null) { - byte[] cmd = new byte[4]; - cmd[0] = 'R'; // RT simulation cmd - cmd[1] = (byte) selectedChannel; - cmd[2] = (byte) selectedRt; - cmd[3] = (byte) 1; - try { - muxProbe.command(cmd); - } catch (RemoteException ex) { - OseeLog.log(MuxToolPlugin.class, Level.WARNING, - "MuxView unable to send RT simulation command"); - } - } - } - }); - MenuItem enableB = new MenuItem(menu, SWT.PUSH); - enableB.setText("Emulate RT (Sec only)"); - enableB.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (muxProbe != null) { - byte[] cmd = new byte[4]; - cmd[0] = 'R'; // RT simulation cmd - cmd[1] = (byte) selectedChannel; - cmd[2] = (byte) selectedRt; - cmd[3] = (byte) 2; - try { - muxProbe.command(cmd); - } catch (RemoteException ex) { - OseeLog.log(MuxToolPlugin.class, Level.WARNING, - "MuxView unable to send RT simulation command"); - } - } - } - }); - new MenuItem(menu, SWT.SEPARATOR); - MenuItem disableBoth = new MenuItem(menu, SWT.PUSH); - disableBoth.setText("Monitor RT (Pri + Sec)"); - disableBoth.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (muxProbe != null) { - byte[] cmd = new byte[4]; - cmd[0] = 'R'; // RT simulation cmd - cmd[1] = (byte) selectedChannel; - cmd[2] = (byte) selectedRt; - cmd[3] = (byte) 0; - try { - muxProbe.command(cmd); - } catch (RemoteException ex) { - OseeLog.log(MuxToolPlugin.class, Level.WARNING, - "MuxView unable to send RT simulation command"); - } - } - } - }); - - // draws pop up menu: - Point pt = new Point(event.x, event.y); - pt = table.toDisplay(pt); - menu.setLocation(pt.x, pt.y); - menu.setVisible(true); - } - } - }); - - } - - /** - * Create the Datawords Tree - */ - private void createDwordTable(final TableViewer parent) { - final Table table = parent.getTable(); - GridData gridData = new GridData(); - int height = table.getItemHeight() * 2; - Rectangle trim = table.computeTrim(0, 0, 0, height); - gridData.heightHint = trim.height; - table.setLayoutData(gridData); - table.setHeaderVisible(false); - table.setLinesVisible(true); - - TableColumn column = new TableColumn(table, SWT.CENTER, 0); - column.setWidth(50); - column = new TableColumn(table, SWT.CENTER, 1); - column.setWidth(50); - column = new TableColumn(table, SWT.CENTER, 2); - column.setWidth(50); - column = new TableColumn(table, SWT.CENTER, 3); - column.setWidth(50); - column = new TableColumn(table, SWT.CENTER, 4); - column.setWidth(50); - column = new TableColumn(table, SWT.CENTER, 5); - column.setWidth(50); - column = new TableColumn(table, SWT.CENTER, 6); - column.setWidth(50); - column = new TableColumn(table, SWT.CENTER, 7); - column.setWidth(50); - - table.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - - final TableCursor cursor = new TableCursor(table, SWT.NONE); - final ControlEditor editor = new ControlEditor(cursor); - editor.grabHorizontal = true; - editor.grabVertical = true; - - cursor.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - final Text text = new Text(cursor, SWT.NONE); - text.setTextLimit(4); - TableItem row = cursor.getRow(); - int column = cursor.getColumn(); - text.setText(row.getText(column)); - text.addKeyListener(new KeyAdapter() { - @Override - public void keyPressed(KeyEvent e) { - // close the text editor and copy the data over - // when the user hits "ENTER" - if (e.character == SWT.CR) { - TableItem row = cursor.getRow(); - int column = cursor.getColumn(); - int newVal = Integer.parseInt(text.getText(), 16); - row.setText(column, text.getText()); - text.dispose(); - cursor.dispose(); - if (muxProbe != null) { - byte[] cmd = new byte[100]; - int index = 0; - cmd[index++] = 'S'; // set 1553 data cmd - cmd[index++] = (byte) selectedChannel; - cmd[index++] = (byte) selectedRt; - cmd[index++] = (byte) selectedTR; - cmd[index++] = (byte) selectedSubaddr; - Object[] o = ((DatawordModel) parent.getInput()).getChildren(); - ((RowNode) o[table.indexOf(row)]).setDataword(newVal, column); - for (Object r : o) { - for (int i = 0; i < 16; i++) { - cmd[index++] = ((RowNode) r).getDatabyte(i); - } - } - try { - muxProbe.command(cmd); - } catch (RemoteException ex) { - OseeLog.log(MuxToolPlugin.class, Level.WARNING, - "MuxView unable to send RT simulation command"); - } - } - } - // close the text editor when the user hits - // "ESC" - if (e.character == SWT.ESC) { - text.dispose(); - cursor.dispose(); - } - // allow only hexadecimal characters, backspace, - // delete, - // left and right arrow keys - if (e.character >= 0x30 && e.character <= 0x39 || e.character >= 0x41 && e.character <= 0x46 || e.character >= 0x61 && e.character <= 0x66 || e.character == SWT.BS || e.character == SWT.DEL || e.keyCode == SWT.ARROW_LEFT || e.keyCode == SWT.ARROW_RIGHT) { - e.doit = true; - } else { - e.doit = false; - } - } - }); - // close the text editor when the user clicks away - text.addFocusListener(new FocusAdapter() { - @Override - public void focusLost(FocusEvent e) { - text.dispose(); - cursor.dispose(); - } - }); - editor.setEditor(text); - text.setFocus(); - } - }); - table.deselectAll(); - } - }); - } - - /** - * Passing the focus request to the viewer's control. - */ - @Override - public void setFocus() { - // msgViewer1.getControl().setFocus(); - } - - @Override - public void dispose() { - MuxToolPlugin.getDefault().getOteClientService().removeConnectionListener(this); - ITestEnvironment env = MuxToolPlugin.getDefault().getOteClientService().getConnectedEnvironment(); - if (env != null) { - try { - ((ITestEnvironmentMessageSystem) env).removeInstrumentationRegistrationListener(exportedThis); - } catch (RemoteException ex) { - OseeLog.log(MuxView.class, Level.WARNING, "could not deregister instrumentation registration listener", ex); - } - IServiceConnector connector = MuxToolPlugin.getDefault().getOteClientService().getConnector(); - try { - connector.unexport(this); - } catch (Exception ex) { - OseeLog.log(MuxView.class, Level.WARNING, "could not unexport this", ex); - } - } - if (muxProbe != null) { - try { - muxProbe.unregister(thread.address); - } catch (RemoteException ex) { - OseeLog.log(MuxView.class, Level.WARNING, "could not disconnect from mux probe", ex); - } - muxProbe = null; - } - if (task != null) { - task.stop(); - } - thread.shutdown(); - - super.dispose(); - } - - class ListenerThread extends Thread { - private volatile boolean done = false; - private final DatagramChannel channel; - private final InetSocketAddress address; - - public ListenerThread() throws IOException { - super("Mux View Listener Thread"); - channel = DatagramChannel.open(); - port = PortUtil.getInstance().getValidPort(); - address = new InetSocketAddress(InetAddress.getLocalHost(), port); - channel.socket().bind(address); - OseeLog.log(MuxToolPlugin.class, Level.INFO, - "MuxView connection - host: " + address.getHostName() + " port: " + address.getPort()); - } - - @Override - public void run() { - final ByteBuffer buffer = ByteBuffer.wrap(new byte[256]); - try { - while (!done) { - buffer.clear(); - channel.receive(buffer); - buffer.flip(); - switch (buffer.array()[0]) { - case 1: - chan1Msgs.onDataAvailable(buffer); - chan1Dwrds.onDataAvailable(buffer); - break; - case 2: - chan2Msgs.onDataAvailable(buffer); - chan2Dwrds.onDataAvailable(buffer); - break; - case 3: - chan3Msgs.onDataAvailable(buffer); - chan3Dwrds.onDataAvailable(buffer); - break; - case 5: - chan5Msgs.onDataAvailable(buffer); - chan5Dwrds.onDataAvailable(buffer); - } - } - } catch (InterruptedIOException e) { - Thread.currentThread().interrupt(); - } catch (IOException e) { - if (!isInterrupted()) { - OseeLog.log(MuxToolPlugin.class, Level.SEVERE, "Interrupted", e); - } - } finally { - try { - channel.close(); - } catch (IOException e) { - // do nothing - } - } - } - - public void shutdown() { - done = true; - interrupt(); - try { - thread.join(5000); - assert !channel.isOpen(); - } catch (InterruptedException e) { - OseeLog.log(MuxView.class, Level.SEVERE, "could not join wiht listener thread", e); - } - } - } - - @Override - public void onConnectionLost(IServiceConnector connector) { - handleConnectionLostStatus(); - } - - @Override - public void onPostConnect(final ConnectionEvent event) { - final ITestEnvironmentMessageSystem environment = (ITestEnvironmentMessageSystem) event.getEnvironment(); - if (environment != null) { - // we are connected - try { - exportedThis = (IInstrumentationRegistrationListener) event.getConnector().findExport(MuxView.this); - if (exportedThis == null) { - exportedThis = (IInstrumentationRegistrationListener) event.getConnector().export(MuxView.this); - } - environment.addInstrumentationRegistrationListener(exportedThis); - } catch (Exception ex) { - OseeLog.log(MuxView.class, Level.SEVERE, "could not register for instrumentation events", ex); - Displays.ensureInDisplayThread(new Runnable() { - @Override - public void run() { - MessageDialog.openError(Displays.getActiveShell(), "Connect Error", - "Could not register for instrumentation events. See Error Log for details"); - } - - }); - - } - } - - } - - private void detach() { - - } - - @Override - public void onPreDisconnect(ConnectionEvent event) { - final ITestEnvironmentMessageSystem environment = (ITestEnvironmentMessageSystem) event.getEnvironment(); - try { - environment.removeInstrumentationRegistrationListener(exportedThis); - } catch (RemoteException ex1) { - OseeLog.log(MuxToolPlugin.class, Level.SEVERE, "Problem unregistering instrumentation registration listener", - ex1); - } - - if (muxProbe != null) { - try { - muxProbe.unregister(thread.address); - } catch (RemoteException ex) { - OseeLog.log(MuxToolPlugin.class, Level.SEVERE, "Problem unregistering socket address", ex); - } finally { - muxProbe = null; - } - } - handleConnectionLostStatus(); - } - - private void handleConnectionLostStatus() { - Displays.ensureInDisplayThread(new Runnable() { - @Override - public void run() { - updateColors(false); - // we are not connected - if (task != null) { - task.stop(); - } - } - }); - } - - private void updateColors(boolean connected) { - msgViewer1.getTable().setBackground(connected ? WHITE : GRAY); - msgViewer2.getTable().setBackground(connected ? WHITE : GRAY); - msgViewer3.getTable().setBackground(connected ? WHITE : GRAY); - msgViewer5.getTable().setBackground(connected ? WHITE : GRAY); - dataViewer1.getTable().setBackground(connected ? WHITE : GRAY); - dataViewer2.getTable().setBackground(connected ? WHITE : GRAY); - dataViewer3.getTable().setBackground(connected ? WHITE : GRAY); - dataViewer5.getTable().setBackground(connected ? WHITE : GRAY); - } - - @Override - public void onDeregistered(String name) throws RemoteException { - if (muxProbe != null && name.equals("MUXIO")) { - muxProbe = null; - handleConnectionLostStatus(); - } - } - - @Override - public void onRegistered(String name, IOInstrumentation instrumentation) throws RemoteException { - try { - if (muxProbe == null && name.equals("MUXIO")) { - muxProbe = instrumentation; - Displays.ensureInDisplayThread(new Runnable() { - @Override - public void run() { - if (task != null) { - task.start(); - } - updateColors(true); - } - - }); - muxProbe.register(thread.address); - - } - } catch (RemoteException ex) { - OseeLog.log(MuxToolPlugin.class, Level.SEVERE, - "Problem registering socket address with remote instrumentation service", ex); - } - - } + private TableViewer msgViewer1, msgViewer2, msgViewer3, msgViewer5; + private TableViewer dataViewer1, dataViewer2, dataViewer3, dataViewer5; + private MessageModel chan1Msgs, chan2Msgs, chan3Msgs, chan5Msgs; + private DatawordModel chan1Dwrds, chan2Dwrds, chan3Dwrds, chan5Dwrds; + private IOInstrumentation muxProbe; + private PeriodicDisplayTask task; + private ListenerThread thread; + private int port; + private int selectedChannel; + private int selectedRt; + private int selectedTR; + private int selectedSubaddr; + private final static Color GRAY = Displays.getSystemColor(SWT.COLOR_GRAY); + private final static Color WHITE = Displays.getSystemColor(SWT.COLOR_WHITE); + + private IInstrumentationRegistrationListener exportedThis; + + public static final String VIEW_ID = "osee.test.muxTool.views.MuxView"; + class NameSorter extends ViewerSorter { + } + + /** + * The constructor. + */ + public MuxView() { + super(); + } + + /** + * This is a callback that will allow us to create the viewers and initialize them. + */ + @Override + public void createPartControl(Composite parent) { + final TabFolder tabFolder = new TabFolder(parent, SWT.WRAP); + tabFolder.addSelectionListener(new SelectionListener() { + @Override + public void widgetSelected(SelectionEvent e) { + switch (tabFolder.getSelectionIndex()) { + case 0: + selectedChannel = 1; + break; + case 1: + selectedChannel = 2; + break; + case 2: + selectedChannel = 3; + break; + case 3: + selectedChannel = 5; + break; + default: + selectedChannel = 1; + } + } + + @Override + public void widgetDefaultSelected(SelectionEvent e) { + } + }); + + // Setup Channel 1 display + TabItem chan1Tab = new TabItem(tabFolder, SWT.NONE); + chan1Tab.setText("Channel 1"); + Composite chan1TabComp = new Composite(tabFolder, SWT.NONE); + chan1Tab.setControl(chan1TabComp); + GridLayout chan1Layout = new GridLayout(1, false); + chan1TabComp.setLayout(chan1Layout); + + msgViewer1 = new TableViewer(chan1TabComp, SWT.BORDER | SWT.FULL_SELECTION); + msgViewer1.setLabelProvider(new MuxMsgLabelProvider()); + msgViewer1.setSorter(new NameSorter()); + msgViewer1.setContentProvider(new MuxMsgContentProvider()); + + createMsgTable(msgViewer1); + + Composite bottom1 = new Composite(chan1TabComp, SWT.NONE); + bottom1.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); + bottom1.setLayout(new GridLayout(2, false)); + + Composite data1 = new Composite(bottom1, SWT.NONE); + RowLayout dataLayout1 = new RowLayout(SWT.HORIZONTAL); + data1.setLayout(dataLayout1); + + Composite labels1 = new Composite(data1, SWT.NONE); + RowLayout labelLayout1 = new RowLayout(SWT.VERTICAL); + labelLayout1.marginTop = 5; + labelLayout1.spacing = 1; + labels1.setLayout(labelLayout1); + Label label1_1 = new Label(labels1, SWT.NONE); + label1_1.setText("Datawords 1-8"); + Label label2_1 = new Label(labels1, SWT.NONE); + label2_1.setText("Datawords 9-16"); + Label label3_1 = new Label(labels1, SWT.NONE); + label3_1.setText("Datawords 17-24"); + Label label4_1 = new Label(labels1, SWT.NONE); + label4_1.setText("Datawords 25-32"); + + Composite datawords1 = new Composite(data1, SWT.NONE); + datawords1.setLayout(new GridLayout(1, false)); + dataViewer1 = new TableViewer(datawords1, SWT.BORDER | SWT.FULL_SELECTION); + dataViewer1.setContentProvider(new DatawordContentProvider()); + dataViewer1.setLabelProvider(new DatawordLabelProvider()); + createDwordTable(dataViewer1); + msgViewer1.addSelectionChangedListener(new ISelectionChangedListener() { + @Override + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection selection = (IStructuredSelection) event.getSelection(); + MessageNode node = (MessageNode) selection.getFirstElement(); + if (node != null) { + selectedRt = node.getRt(); + selectedTR = node.getTransmitReceive(); + selectedSubaddr = node.getSubaddress(); + chan1Dwrds.setCurrentNode(node.getName()); + } + } + }); + final Button reset1 = new Button(bottom1, SWT.PUSH); + reset1.setText("Reset Display"); + reset1.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.GRAB_HORIZONTAL)); + reset1.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + selectedRt = 0; + selectedTR = 0; + selectedSubaddr = 0; + chan1Msgs.removeMessages(); + chan1Dwrds.setCurrentNode(null); + } + }); + + // Setup Channel 2 display + TabItem chan2Tab = new TabItem(tabFolder, SWT.NONE); + chan2Tab.setText("Channel 2"); + Composite chan2TabComp = new Composite(tabFolder, SWT.NONE); + chan2Tab.setControl(chan2TabComp); + GridLayout chan2Layout = new GridLayout(1, false); + chan2TabComp.setLayout(chan2Layout); + msgViewer2 = new TableViewer(chan2TabComp, SWT.BORDER | SWT.FULL_SELECTION); + msgViewer2.setContentProvider(new MuxMsgContentProvider()); + msgViewer2.setLabelProvider(new MuxMsgLabelProvider()); + msgViewer2.setSorter(new NameSorter()); + createMsgTable(msgViewer2); + Composite bottom2 = new Composite(chan2TabComp, SWT.NONE); + bottom2.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); + bottom2.setLayout(new GridLayout(2, false)); + + Composite data2 = new Composite(bottom2, SWT.NONE); + RowLayout dataLayout2 = new RowLayout(SWT.HORIZONTAL); + data2.setLayout(dataLayout2); + + Composite labels2 = new Composite(data2, SWT.NONE); + RowLayout lableLayout2 = new RowLayout(SWT.VERTICAL); + lableLayout2.marginTop = 5; + lableLayout2.spacing = 1; + labels2.setLayout(lableLayout2); + Label label1_2 = new Label(labels2, SWT.NONE); + label1_2.setText("Datawords 1-8"); + Label label2_2 = new Label(labels2, SWT.NONE); + label2_2.setText("Datawords 9-16"); + Label label3_2 = new Label(labels2, SWT.NONE); + label3_2.setText("Datawords 17-24"); + Label label4_2 = new Label(labels2, SWT.NONE); + label4_2.setText("Datawords 25-32"); + + Composite datawords2 = new Composite(data2, SWT.NONE); + datawords2.setLayout(new GridLayout(1, false)); + dataViewer2 = new TableViewer(datawords2, SWT.BORDER | SWT.FULL_SELECTION); + dataViewer2.setContentProvider(new DatawordContentProvider()); + dataViewer2.setLabelProvider(new DatawordLabelProvider()); + createDwordTable(dataViewer2); + msgViewer2.addSelectionChangedListener(new ISelectionChangedListener() { + @Override + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection selection = (IStructuredSelection) event.getSelection(); + MessageNode node = (MessageNode) selection.getFirstElement(); + if (node != null) { + selectedRt = node.getRt(); + selectedTR = node.getTransmitReceive(); + selectedSubaddr = node.getSubaddress(); + chan2Dwrds.setCurrentNode(node.getName()); + } + } + }); + final Button reset2 = new Button(bottom2, SWT.PUSH); + reset2.setText("Reset Display"); + reset2.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.GRAB_HORIZONTAL)); + reset2.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + selectedRt = 0; + selectedTR = 0; + selectedSubaddr = 0; + chan2Msgs.removeMessages(); + chan2Dwrds.setCurrentNode(null); + } + }); + + // Setup Channel 3 display + TabItem chan3Tab = new TabItem(tabFolder, SWT.NONE); + chan3Tab.setText("Channel 3"); + Composite chan3TabComp = new Composite(tabFolder, SWT.NONE); + chan3Tab.setControl(chan3TabComp); + GridLayout chan3Layout = new GridLayout(1, false); + chan3TabComp.setLayout(chan3Layout); + msgViewer3 = new TableViewer(chan3TabComp, SWT.BORDER | SWT.FULL_SELECTION); + msgViewer3.setContentProvider(new MuxMsgContentProvider()); + msgViewer3.setLabelProvider(new MuxMsgLabelProvider()); + msgViewer3.setSorter(new NameSorter()); + createMsgTable(msgViewer3); + Composite bottom3 = new Composite(chan3TabComp, SWT.NONE); + bottom3.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); + bottom3.setLayout(new GridLayout(2, false)); + + Composite data3 = new Composite(bottom3, SWT.NONE); + RowLayout dataLayout3 = new RowLayout(SWT.HORIZONTAL); + data3.setLayout(dataLayout3); + + Composite labels3 = new Composite(data3, SWT.NONE); + RowLayout lableLayout3 = new RowLayout(SWT.VERTICAL); + lableLayout3.marginTop = 5; + lableLayout3.spacing = 1; + labels3.setLayout(lableLayout3); + Label label1_3 = new Label(labels3, SWT.NONE); + label1_3.setText("Datawords 1-8"); + Label label2_3 = new Label(labels3, SWT.NONE); + label2_3.setText("Datawords 9-16"); + Label label3_3 = new Label(labels3, SWT.NONE); + label3_3.setText("Datawords 17-24"); + Label label4_3 = new Label(labels3, SWT.NONE); + label4_3.setText("Datawords 25-32"); + + Composite datawords3 = new Composite(data3, SWT.NONE); + datawords3.setLayout(new GridLayout(1, false)); + dataViewer3 = new TableViewer(datawords3, SWT.BORDER | SWT.FULL_SELECTION); + dataViewer3.setContentProvider(new DatawordContentProvider()); + dataViewer3.setLabelProvider(new DatawordLabelProvider()); + createDwordTable(dataViewer3); + msgViewer3.addSelectionChangedListener(new ISelectionChangedListener() { + @Override + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection selection = (IStructuredSelection) event.getSelection(); + MessageNode node = (MessageNode) selection.getFirstElement(); + if (node != null) { + selectedRt = node.getRt(); + selectedTR = node.getTransmitReceive(); + selectedSubaddr = node.getSubaddress(); + chan3Dwrds.setCurrentNode(node.getName()); + } + } + }); + final Button reset3 = new Button(bottom3, SWT.PUSH); + reset3.setText("Reset Display"); + reset3.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.GRAB_HORIZONTAL)); + reset3.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + selectedRt = 0; + selectedTR = 0; + selectedSubaddr = 0; + chan3Msgs.removeMessages(); + chan3Dwrds.setCurrentNode(null); + } + }); + + // Setup Channel 5 display + TabItem chan5Tab = new TabItem(tabFolder, SWT.NONE); + chan5Tab.setText("Channel 5"); + Composite chan5TabComp = new Composite(tabFolder, SWT.NONE); + chan5Tab.setControl(chan5TabComp); + GridLayout chan5Layout = new GridLayout(1, false); + chan5TabComp.setLayout(chan5Layout); + msgViewer5 = new TableViewer(chan5TabComp, SWT.BORDER | SWT.FULL_SELECTION); + msgViewer5.setContentProvider(new MuxMsgContentProvider()); + msgViewer5.setLabelProvider(new MuxMsgLabelProvider()); + msgViewer5.setSorter(new NameSorter()); + createMsgTable(msgViewer5); + Composite bottom5 = new Composite(chan5TabComp, SWT.NONE); + bottom5.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); + bottom5.setLayout(new GridLayout(2, false)); + + Composite data5 = new Composite(bottom5, SWT.NONE); + RowLayout dataLayout5 = new RowLayout(SWT.HORIZONTAL); + data5.setLayout(dataLayout5); + + Composite labels5 = new Composite(data5, SWT.NONE); + RowLayout lableLayout5 = new RowLayout(SWT.VERTICAL); + lableLayout5.marginTop = 5; + lableLayout5.spacing = 1; + labels5.setLayout(lableLayout5); + Label label1_5 = new Label(labels5, SWT.NONE); + label1_5.setText("Datawords 1-8"); + Label label2_5 = new Label(labels5, SWT.NONE); + label2_5.setText("Datawords 9-16"); + Label label3_5 = new Label(labels5, SWT.NONE); + label3_5.setText("Datawords 17-24"); + Label label4_5 = new Label(labels5, SWT.NONE); + label4_5.setText("Datawords 25-32"); + + Composite datawords5 = new Composite(data5, SWT.NONE); + datawords5.setLayout(new GridLayout(1, false)); + dataViewer5 = new TableViewer(datawords5, SWT.BORDER | SWT.FULL_SELECTION); + dataViewer5.setContentProvider(new DatawordContentProvider()); + dataViewer5.setLabelProvider(new DatawordLabelProvider()); + createDwordTable(dataViewer5); + msgViewer5.addSelectionChangedListener(new ISelectionChangedListener() { + @Override + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection selection = (IStructuredSelection) event.getSelection(); + MessageNode node = (MessageNode) selection.getFirstElement(); + if (node != null) { + selectedRt = node.getRt(); + selectedTR = node.getTransmitReceive(); + selectedSubaddr = node.getSubaddress(); + chan5Dwrds.setCurrentNode(node.getName()); + } + } + }); + final Button reset5 = new Button(bottom5, SWT.PUSH); + reset5.setText("Reset Display"); + reset5.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.GRAB_HORIZONTAL)); + reset5.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + selectedRt = 0; + selectedTR = 0; + selectedSubaddr = 0; + chan5Msgs.removeMessages(); + chan5Dwrds.setCurrentNode(null); + } + }); + msgViewer1.setInput(chan1Msgs = new MessageModel()); + dataViewer1.setInput(chan1Dwrds = new DatawordModel()); + msgViewer2.setInput(chan2Msgs = new MessageModel()); + dataViewer2.setInput(chan2Dwrds = new DatawordModel()); + msgViewer3.setInput(chan3Msgs = new MessageModel()); + dataViewer3.setInput(chan3Dwrds = new DatawordModel()); + msgViewer5.setInput(chan5Msgs = new MessageModel()); + dataViewer5.setInput(chan5Dwrds = new DatawordModel()); + updateColors(false); + try { + thread = new ListenerThread(); + } catch (Exception e) { + OseeLog.log(MuxView.class, Level.SEVERE, "Mux View could not start listening thread", e); + MessageDialog.openError(parent.getShell(), "Error", "Mux View could not initialize. See Error Log for details"); + return; + } + thread.start(); + + task = new PeriodicDisplayTask(Display.getDefault(), 333) { + @Override + protected void update() { + try { + msgViewer1.refresh(); + dataViewer1.refresh(); + msgViewer2.refresh(); + dataViewer2.refresh(); + msgViewer3.refresh(); + dataViewer3.refresh(); + msgViewer5.refresh(); + dataViewer5.refresh(); + } catch (Throwable t) { + OseeLog.log(MuxToolPlugin.class, Level.SEVERE, "problems refreshing viewer", t); + stop(); + } + } + }; + task.start(); + PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, "org.eclipse.osee.ote.ui.mux.muxView"); + MuxToolPlugin.getDefault().getOteClientService().addConnectionListener(this); + } + + /** + * Create the Mux Message Tree + */ + private void createMsgTable(TableViewer parent) { + final Table table = parent.getTable(); + GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL); + int height = table.getItemHeight() * 20; + Rectangle trim = table.computeTrim(0, 0, 0, height); + gridData.heightHint = trim.height; + table.setLayoutData(gridData); + table.setHeaderVisible(true); + TableColumn column = new TableColumn(table, SWT.CENTER, 0); + column.setText("Message"); + column.setWidth(70); + column = new TableColumn(table, SWT.CENTER, 1); + column.setText("RT-RT"); + column.setWidth(60); + column = new TableColumn(table, SWT.CENTER, 2); + column.setText("Word Cnt"); + column.setWidth(70); + column = new TableColumn(table, SWT.CENTER, 3); + column.setText("StatusWd"); + column.setWidth(70); + column = new TableColumn(table, SWT.CENTER, 4); + column.setText("Emulation"); + column.setWidth(70); + column = new TableColumn(table, SWT.CENTER, 5); + column.setText("Bus"); + column.setWidth(50); + column = new TableColumn(table, SWT.CENTER, 6); + column.setText("Activity"); + column.setWidth(60); + column = new TableColumn(table, SWT.CENTER, 7); + column.setText("Error Cnt"); + column.setWidth(70); + column = new TableColumn(table, SWT.CENTER, 8); + column.setText("Error Type"); + column.setWidth(150); + + table.addMouseListener(new MouseAdapter() { + @Override + public void mouseDown(final MouseEvent event) { + if (event.button == 3) { + Menu menu = new Menu(table.getShell(), SWT.POP_UP); + MenuItem enableBoth = new MenuItem(menu, SWT.PUSH); + enableBoth.setText("Emulate RT (Pri + Sec)"); + enableBoth.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (muxProbe != null) { + byte[] cmd = new byte[4]; + cmd[0] = 'R'; // RT simulation cmd + cmd[1] = (byte) selectedChannel; + cmd[2] = (byte) selectedRt; + cmd[3] = (byte) 3; + try { + muxProbe.command(cmd); + } catch (RemoteException ex) { + OseeLog.log(MuxToolPlugin.class, Level.WARNING, + "MuxView unable to send RT simulation command"); + } + } + } + }); + MenuItem enableA = new MenuItem(menu, SWT.PUSH); + enableA.setText("Emulate RT (Pri Only)"); + enableA.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (muxProbe != null) { + byte[] cmd = new byte[4]; + cmd[0] = 'R'; // RT simulation cmd + cmd[1] = (byte) selectedChannel; + cmd[2] = (byte) selectedRt; + cmd[3] = (byte) 1; + try { + muxProbe.command(cmd); + } catch (RemoteException ex) { + OseeLog.log(MuxToolPlugin.class, Level.WARNING, + "MuxView unable to send RT simulation command"); + } + } + } + }); + MenuItem enableB = new MenuItem(menu, SWT.PUSH); + enableB.setText("Emulate RT (Sec only)"); + enableB.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (muxProbe != null) { + byte[] cmd = new byte[4]; + cmd[0] = 'R'; // RT simulation cmd + cmd[1] = (byte) selectedChannel; + cmd[2] = (byte) selectedRt; + cmd[3] = (byte) 2; + try { + muxProbe.command(cmd); + } catch (RemoteException ex) { + OseeLog.log(MuxToolPlugin.class, Level.WARNING, + "MuxView unable to send RT simulation command"); + } + } + } + }); + new MenuItem(menu, SWT.SEPARATOR); + MenuItem disableBoth = new MenuItem(menu, SWT.PUSH); + disableBoth.setText("Monitor RT (Pri + Sec)"); + disableBoth.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (muxProbe != null) { + byte[] cmd = new byte[4]; + cmd[0] = 'R'; // RT simulation cmd + cmd[1] = (byte) selectedChannel; + cmd[2] = (byte) selectedRt; + cmd[3] = (byte) 0; + try { + muxProbe.command(cmd); + } catch (RemoteException ex) { + OseeLog.log(MuxToolPlugin.class, Level.WARNING, + "MuxView unable to send RT simulation command"); + } + } + } + }); + + // draws pop up menu: + Point pt = new Point(event.x, event.y); + pt = table.toDisplay(pt); + menu.setLocation(pt.x, pt.y); + menu.setVisible(true); + } + } + }); + + } + + /** + * Create the Datawords Tree + */ + private void createDwordTable(final TableViewer parent) { + final Table table = parent.getTable(); + GridData gridData = new GridData(); + int height = table.getItemHeight() * 2; + Rectangle trim = table.computeTrim(0, 0, 0, height); + gridData.heightHint = trim.height; + table.setLayoutData(gridData); + table.setHeaderVisible(false); + table.setLinesVisible(true); + + TableColumn column = new TableColumn(table, SWT.CENTER, 0); + column.setWidth(50); + column = new TableColumn(table, SWT.CENTER, 1); + column.setWidth(50); + column = new TableColumn(table, SWT.CENTER, 2); + column.setWidth(50); + column = new TableColumn(table, SWT.CENTER, 3); + column.setWidth(50); + column = new TableColumn(table, SWT.CENTER, 4); + column.setWidth(50); + column = new TableColumn(table, SWT.CENTER, 5); + column.setWidth(50); + column = new TableColumn(table, SWT.CENTER, 6); + column.setWidth(50); + column = new TableColumn(table, SWT.CENTER, 7); + column.setWidth(50); + + table.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + + final TableCursor cursor = new TableCursor(table, SWT.NONE); + final ControlEditor editor = new ControlEditor(cursor); + editor.grabHorizontal = true; + editor.grabVertical = true; + + cursor.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + final Text text = new Text(cursor, SWT.NONE); + text.setTextLimit(4); + TableItem row = cursor.getRow(); + int column = cursor.getColumn(); + text.setText(row.getText(column)); + text.addKeyListener(new KeyAdapter() { + @Override + public void keyPressed(KeyEvent e) { + // close the text editor and copy the data over + // when the user hits "ENTER" + if (e.character == SWT.CR) { + TableItem row = cursor.getRow(); + int column = cursor.getColumn(); + int newVal = Integer.parseInt(text.getText(), 16); + row.setText(column, text.getText()); + text.dispose(); + cursor.dispose(); + if (muxProbe != null) { + byte[] cmd = new byte[100]; + int index = 0; + cmd[index++] = 'S'; // set 1553 data cmd + cmd[index++] = (byte) selectedChannel; + cmd[index++] = (byte) selectedRt; + cmd[index++] = (byte) selectedTR; + cmd[index++] = (byte) selectedSubaddr; + Object[] o = ((DatawordModel) parent.getInput()).getChildren(); + ((RowNode) o[table.indexOf(row)]).setDataword(newVal, column); + for (Object r : o) { + for (int i = 0; i < 16; i++) { + cmd[index++] = ((RowNode) r).getDatabyte(i); + } + } + try { + muxProbe.command(cmd); + } catch (RemoteException ex) { + OseeLog.log(MuxToolPlugin.class, Level.WARNING, + "MuxView unable to send RT simulation command"); + } + } + } + // close the text editor when the user hits + // "ESC" + if (e.character == SWT.ESC) { + text.dispose(); + cursor.dispose(); + } + // allow only hexadecimal characters, backspace, + // delete, + // left and right arrow keys + if (e.character >= 0x30 && e.character <= 0x39 || e.character >= 0x41 && e.character <= 0x46 || e.character >= 0x61 && e.character <= 0x66 || e.character == SWT.BS || e.character == SWT.DEL || e.keyCode == SWT.ARROW_LEFT || e.keyCode == SWT.ARROW_RIGHT) { + e.doit = true; + } else { + e.doit = false; + } + } + }); + // close the text editor when the user clicks away + text.addFocusListener(new FocusAdapter() { + @Override + public void focusLost(FocusEvent e) { + text.dispose(); + cursor.dispose(); + } + }); + editor.setEditor(text); + text.setFocus(); + } + }); + table.deselectAll(); + } + }); + } + + /** + * Passing the focus request to the viewer's control. + */ + @Override + public void setFocus() { + // msgViewer1.getControl().setFocus(); + } + + @Override + public void dispose() { + MuxToolPlugin.getDefault().getOteClientService().removeConnectionListener(this); + ITestEnvironment env = MuxToolPlugin.getDefault().getOteClientService().getConnectedEnvironment(); + if (env != null) { + try { + ((ITestEnvironmentMessageSystem) env).removeInstrumentationRegistrationListener(exportedThis); + } catch (RemoteException ex) { + OseeLog.log(MuxView.class, Level.WARNING, "could not deregister instrumentation registration listener", ex); + } + IServiceConnector connector = MuxToolPlugin.getDefault().getOteClientService().getConnector(); + try { + connector.unexport(this); + } catch (Exception ex) { + OseeLog.log(MuxView.class, Level.WARNING, "could not unexport this", ex); + } + } + if (muxProbe != null) { + try { + muxProbe.unregister(thread.address); + } catch (RemoteException ex) { + OseeLog.log(MuxView.class, Level.WARNING, "could not disconnect from mux probe", ex); + } + muxProbe = null; + } + if (task != null) { + task.stop(); + } + thread.shutdown(); + + super.dispose(); + } + + class ListenerThread extends Thread { + private volatile boolean done = false; + private final DatagramChannel channel; + private final InetSocketAddress address; + + public ListenerThread() throws IOException { + super("Mux View Listener Thread"); + channel = DatagramChannel.open(); + port = PortUtil.getInstance().getValidPort(); + address = new InetSocketAddress(InetAddress.getLocalHost(), port); + channel.socket().bind(address); + OseeLog.log(MuxToolPlugin.class, Level.INFO, + "MuxView connection - host: " + address.getHostName() + " port: " + address.getPort()); + } + + @Override + public void run() { + final ByteBuffer buffer = ByteBuffer.wrap(new byte[256]); + try { + while (!done) { + buffer.clear(); + channel.receive(buffer); + buffer.flip(); + switch (buffer.array()[0]) { + case 1: + chan1Msgs.onDataAvailable(buffer); + chan1Dwrds.onDataAvailable(buffer); + break; + case 2: + chan2Msgs.onDataAvailable(buffer); + chan2Dwrds.onDataAvailable(buffer); + break; + case 3: + chan3Msgs.onDataAvailable(buffer); + chan3Dwrds.onDataAvailable(buffer); + break; + case 5: + chan5Msgs.onDataAvailable(buffer); + chan5Dwrds.onDataAvailable(buffer); + } + } + } catch (InterruptedIOException e) { + Thread.currentThread().interrupt(); + } catch (IOException e) { + if (!isInterrupted()) { + OseeLog.log(MuxToolPlugin.class, Level.SEVERE, "Interrupted", e); + } + } finally { + try { + channel.close(); + } catch (IOException e) { + // do nothing + } + } + } + + public void shutdown() { + done = true; + interrupt(); + try { + thread.join(5000); + assert !channel.isOpen(); + } catch (InterruptedException e) { + OseeLog.log(MuxView.class, Level.SEVERE, "could not join wiht listener thread", e); + } + } + } + + @Override + public void onConnectionLost(IServiceConnector connector) { + handleConnectionLostStatus(); + } + + @Override + public void onPostConnect(final ConnectionEvent event) { + final ITestEnvironmentMessageSystem environment = (ITestEnvironmentMessageSystem) event.getEnvironment(); + if (environment != null) { + // we are connected + try { + exportedThis = (IInstrumentationRegistrationListener) event.getConnector().findExport(MuxView.this); + if (exportedThis == null) { + exportedThis = (IInstrumentationRegistrationListener) event.getConnector().export(MuxView.this); + } + environment.addInstrumentationRegistrationListener(exportedThis); + } catch (Exception ex) { + OseeLog.log(MuxView.class, Level.SEVERE, "could not register for instrumentation events", ex); + Displays.ensureInDisplayThread(new Runnable() { + @Override + public void run() { + MessageDialog.openError(Displays.getActiveShell(), "Connect Error", + "Could not register for instrumentation events. See Error Log for details"); + } + + }); + + } + } + + } + + private void detach() { + + } + + @Override + public void onPreDisconnect(ConnectionEvent event) { + final ITestEnvironmentMessageSystem environment = (ITestEnvironmentMessageSystem) event.getEnvironment(); + try { + environment.removeInstrumentationRegistrationListener(exportedThis); + } catch (RemoteException ex1) { + OseeLog.log(MuxToolPlugin.class, Level.SEVERE, "Problem unregistering instrumentation registration listener", + ex1); + } + + if (muxProbe != null) { + try { + muxProbe.unregister(thread.address); + } catch (RemoteException ex) { + OseeLog.log(MuxToolPlugin.class, Level.SEVERE, "Problem unregistering socket address", ex); + } finally { + muxProbe = null; + } + } + handleConnectionLostStatus(); + } + + private void handleConnectionLostStatus() { + Displays.ensureInDisplayThread(new Runnable() { + @Override + public void run() { + updateColors(false); + // we are not connected + if (task != null) { + task.stop(); + } + } + }); + } + + private void updateColors(boolean connected) { + msgViewer1.getTable().setBackground(connected ? WHITE : GRAY); + msgViewer2.getTable().setBackground(connected ? WHITE : GRAY); + msgViewer3.getTable().setBackground(connected ? WHITE : GRAY); + msgViewer5.getTable().setBackground(connected ? WHITE : GRAY); + dataViewer1.getTable().setBackground(connected ? WHITE : GRAY); + dataViewer2.getTable().setBackground(connected ? WHITE : GRAY); + dataViewer3.getTable().setBackground(connected ? WHITE : GRAY); + dataViewer5.getTable().setBackground(connected ? WHITE : GRAY); + } + + @Override + public void onDeregistered(String name) throws RemoteException { + if (muxProbe != null && name.equals("MUXIO")) { + muxProbe = null; + handleConnectionLostStatus(); + } + } + + @Override + public void onRegistered(String name, IOInstrumentation instrumentation) throws RemoteException { + try { + if (muxProbe == null && name.equals("MUXIO")) { + muxProbe = instrumentation; + Displays.ensureInDisplayThread(new Runnable() { + @Override + public void run() { + if (task != null) { + task.start(); + } + updateColors(true); + } + + }); + muxProbe.register(thread.address); + + } + } catch (RemoteException ex) { + OseeLog.log(MuxToolPlugin.class, Level.SEVERE, + "Problem registering socket address with remote instrumentation service", ex); + } + + } } |