diff options
Diffstat (limited to 'plugins/org.eclipse.osee.ote.ui.message')
-rw-r--r-- | plugins/org.eclipse.osee.ote.ui.message/src/org/eclipse/osee/ote/ui/message/watch/WatchView.java | 349 |
1 files changed, 202 insertions, 147 deletions
diff --git a/plugins/org.eclipse.osee.ote.ui.message/src/org/eclipse/osee/ote/ui/message/watch/WatchView.java b/plugins/org.eclipse.osee.ote.ui.message/src/org/eclipse/osee/ote/ui/message/watch/WatchView.java index 02df6c6e16e..70908120159 100644 --- a/plugins/org.eclipse.osee.ote.ui.message/src/org/eclipse/osee/ote/ui/message/watch/WatchView.java +++ b/plugins/org.eclipse.osee.ote.ui.message/src/org/eclipse/osee/ote/ui/message/watch/WatchView.java @@ -26,6 +26,7 @@ import java.util.Set; import java.util.logging.Level; import java.util.regex.Matcher; import java.util.regex.Pattern; + import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtension; import org.eclipse.core.runtime.IProgressMonitor; @@ -94,6 +95,10 @@ import org.eclipse.osee.ote.ui.message.watch.action.ZeroizeMessageAction; import org.eclipse.osee.ote.ui.message.watch.recording.RecordingWizard; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.SashForm; +import org.eclipse.swt.dnd.Clipboard; +import org.eclipse.swt.dnd.TextTransfer; +import org.eclipse.swt.events.KeyEvent; +import org.eclipse.swt.events.KeyListener; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.SelectionEvent; @@ -105,6 +110,7 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Menu; @@ -123,7 +129,7 @@ public final class WatchView extends ViewPart implements IActionable, IMessageDi private final ClientMessageServiceTracker msgServiceTracker; private Label statusTxt; - + private Clipboard cb; private final File watchFile; private Button recordButton; private final Benchmark benchMark = new Benchmark("Message Watch Update Time"); @@ -238,6 +244,8 @@ public final class WatchView extends ViewPart implements IActionable, IMessageDi private Composite parentComposite; private WatchList watchList; + private MessageFinder messageFinder; + public WatchView() { watchFile = OseeData.getFile("msgWatch.txt"); msgServiceTracker = new ClientMessageServiceTracker(Activator.getDefault().getBundle().getBundleContext(), this); @@ -403,6 +411,28 @@ public final class WatchView extends ViewPart implements IActionable, IMessageDi clientService.addDictionaryListener(this); clientService.addConnectionListener(this); loadWatchFile(); + + cb = new Clipboard(Display.getCurrent()); + + treeViewer.getControl().addKeyListener(new KeyListener(){ + + @Override + public void keyPressed(KeyEvent e) { + if(e.stateMask == SWT.CTRL && e.keyCode == 'v'){ + TextTransfer transfer = TextTransfer.getInstance(); + String data = (String) cb.getContents(transfer); + if (data != null) { + SignalStripper signalStripper = new SignalStripper(); + String mwi = signalStripper.generateStringToWrite(data); + loadWatchFile(mwi); + } + } + } + + @Override + public void keyReleased(KeyEvent e) { + } + }); } @Override @@ -677,156 +707,179 @@ public final class WatchView extends ViewPart implements IActionable, IMessageDi public void loadWatchFile(final File watchFile) { if (watchFile != null && watchFile.exists()) { - final Job job = new Job("Loading watch file") { - - @Override - protected IStatus run(IProgressMonitor monitor) { - try { - String text = Lib.fileToString(watchFile); - final String[] msgs = text.split("\n"); - monitor.beginTask("loading watch elements", msgs.length + 10); - - if (msgs.length > 0) { - if (msgs[0].equals("version=2.0")) { - final Map<String, ArrayList<ElementPath>> pathsToAdd = - new HashMap<String, ArrayList<ElementPath>>(); - final List<ElementPath> recBodyElementsToAdd = new ArrayList<ElementPath>(); - final List<ElementPath> recHeaderElementsToAdd = new ArrayList<ElementPath>(); - final Set<String> recHeaderHex = new HashSet<String>(); - final Set<String> recBodyHex = new HashSet<String>(); - for (int i = 1; i < msgs.length; i++) { - if (msgs[i].startsWith("#rec#")) { - // #rec#,message,[body|header|bodyHex| - // headerHex],[boolean|path] - String[] els = msgs[i].split(","); - if (els.length == 4) { - String message = els[1]; - String type = els[2]; - String value = els[3]; - if (type.equals("body")) { - recBodyElementsToAdd.add(new ElementPath(value)); - } else if (type.equals("header")) { - recHeaderElementsToAdd.add(new ElementPath(value)); - } else if (type.equals("headerHex")) { - if (Boolean.parseBoolean(value)) { - recHeaderHex.add(message); - } - } else if (type.equals("bodyHex")) { - if (Boolean.parseBoolean(value)) { - recBodyHex.add(message); - } - } - } - monitor.worked(1); - } else { - ElementPath path = new ElementPath(msgs[i]); - ArrayList<ElementPath> collection = pathsToAdd.get(path.getMessageName()); - if (collection == null) { - collection = new ArrayList<ElementPath>(); - pathsToAdd.put(path.getMessageName(), collection); - } - collection.add(path); - monitor.worked(1); - } - } - Displays.pendInDisplayThread(new Runnable() { - @Override - public void run() { - try { - treeViewer.getTree().setRedraw(false); - addWatchMessage(new AddWatchParameter(pathsToAdd)); - for (ElementPath path : recBodyElementsToAdd) { - WatchedMessageNode msgNode = watchList.getMessageNode(path.getMessageName()); - if (msgNode != null) { - msgNode.getRecordingState().addBody(path); - } - } - for (ElementPath path : recHeaderElementsToAdd) { - WatchedMessageNode msgNode = watchList.getMessageNode(path.getMessageName()); - if (msgNode != null) { - msgNode.getRecordingState().addHeader(path); - } - } - for (String msg : recBodyHex) { - WatchedMessageNode msgNode = watchList.getMessageNode(msg); - if (msgNode != null) { - msgNode.getRecordingState().setBodyDump(true); - } - } - for (String msg : recHeaderHex) { - WatchedMessageNode msgNode = watchList.getMessageNode(msg); - if (msgNode != null) { - msgNode.getRecordingState().setHeaderDump(true); - } - } - } finally { - treeViewer.getTree().setRedraw(true); - treeViewer.refresh(); - } - } - }); - - Displays.pendInDisplayThread(new Runnable() { - @Override - public void run() { - saveWatchFile(); - treeViewer.refresh(); - } - }); - monitor.worked(10); - } else { - - for (String msg : msgs) { - // final Matcher jarMatch = - // jarPattern.matcher(msg); - final Matcher elmMatch = elmPattern.matcher(msg); - final Matcher msgMatch = msgPattern.matcher(msg); - - if (elmMatch.find()) { - Displays.pendInDisplayThread(new Runnable() { - @Override - public void run() { - String msg = elmMatch.group(1); - String elm = elmMatch.group(2); - ElementPath element = new ElementPath(msg, elm); - AddWatchParameter parameter = new AddWatchParameter(elmMatch.group(1), element); - addWatchMessage(parameter); - } - }); - } else if (msgMatch.find()) { - Displays.pendInDisplayThread(new Runnable() { - @Override - public void run() { - addWatchMessage(new AddWatchParameter(msgMatch.group(1))); - } - }); - } - monitor.worked(1); - } - Displays.pendInDisplayThread(new Runnable() { - @Override - public void run() { - saveWatchFile(); - treeViewer.refresh(); - } - }); - monitor.worked(10); - - } - } - } catch (Throwable t) { - OseeLog.log(Activator.class, Level.SEVERE, "error loading watch file", t); - return org.eclipse.core.runtime.Status.CANCEL_STATUS; - } finally { - monitor.done(); - } - return org.eclipse.core.runtime.Status.OK_STATUS; - } - }; + final Job job = new LoadWatchList(watchFile); Jobs.startJob(job); } } + + public void loadWatchFile(final String watchFileText) { + final Job job = new LoadWatchList(watchFileText); + Jobs.startJob(job); + } + private class LoadWatchList extends Job{ + + private File watchFile; + private String text; + + LoadWatchList(File watchFile){ + super("Loading watch file"); + this.watchFile = watchFile; + } + + LoadWatchList(String watchFileText){ + super("Loading watch file"); + this.text = watchFileText; + } + + + @Override + protected IStatus run(IProgressMonitor monitor) { + try { + if(watchFile != null){ + text = Lib.fileToString(watchFile); + } + final String[] msgs = text.split("\n"); + monitor.beginTask("loading watch elements", msgs.length + 10); + + if (msgs.length > 0) { + if (msgs[0].equals("version=2.0")) { + final Map<String, ArrayList<ElementPath>> pathsToAdd = + new HashMap<String, ArrayList<ElementPath>>(); + final List<ElementPath> recBodyElementsToAdd = new ArrayList<ElementPath>(); + final List<ElementPath> recHeaderElementsToAdd = new ArrayList<ElementPath>(); + final Set<String> recHeaderHex = new HashSet<String>(); + final Set<String> recBodyHex = new HashSet<String>(); + for (int i = 1; i < msgs.length; i++) { + if (msgs[i].startsWith("#rec#")) { + // #rec#,message,[body|header|bodyHex| + // headerHex],[boolean|path] + String[] els = msgs[i].split(","); + if (els.length == 4) { + String message = els[1]; + String type = els[2]; + String value = els[3]; + if (type.equals("body")) { + recBodyElementsToAdd.add(new ElementPath(value)); + } else if (type.equals("header")) { + recHeaderElementsToAdd.add(new ElementPath(value)); + } else if (type.equals("headerHex")) { + if (Boolean.parseBoolean(value)) { + recHeaderHex.add(message); + } + } else if (type.equals("bodyHex")) { + if (Boolean.parseBoolean(value)) { + recBodyHex.add(message); + } + } + } + monitor.worked(1); + } else { + ElementPath path = new ElementPath(msgs[i]); + ArrayList<ElementPath> collection = pathsToAdd.get(path.getMessageName()); + if (collection == null) { + collection = new ArrayList<ElementPath>(); + pathsToAdd.put(path.getMessageName(), collection); + } + collection.add(path); + monitor.worked(1); + } + } + Displays.pendInDisplayThread(new Runnable() { + @Override + public void run() { + try { + treeViewer.getTree().setRedraw(false); + addWatchMessage(new AddWatchParameter(pathsToAdd)); + for (ElementPath path : recBodyElementsToAdd) { + WatchedMessageNode msgNode = watchList.getMessageNode(path.getMessageName()); + if (msgNode != null) { + msgNode.getRecordingState().addBody(path); + } + } + for (ElementPath path : recHeaderElementsToAdd) { + WatchedMessageNode msgNode = watchList.getMessageNode(path.getMessageName()); + if (msgNode != null) { + msgNode.getRecordingState().addHeader(path); + } + } + for (String msg : recBodyHex) { + WatchedMessageNode msgNode = watchList.getMessageNode(msg); + if (msgNode != null) { + msgNode.getRecordingState().setBodyDump(true); + } + } + for (String msg : recHeaderHex) { + WatchedMessageNode msgNode = watchList.getMessageNode(msg); + if (msgNode != null) { + msgNode.getRecordingState().setHeaderDump(true); + } + } + } finally { + treeViewer.getTree().setRedraw(true); + treeViewer.refresh(); + } + } + }); + + Displays.pendInDisplayThread(new Runnable() { + @Override + public void run() { + saveWatchFile(); + treeViewer.refresh(); + } + }); + monitor.worked(10); + } else { + + for (String msg : msgs) { + // final Matcher jarMatch = + // jarPattern.matcher(msg); + final Matcher elmMatch = elmPattern.matcher(msg); + final Matcher msgMatch = msgPattern.matcher(msg); + + if (elmMatch.find()) { + Displays.pendInDisplayThread(new Runnable() { + @Override + public void run() { + String msg = elmMatch.group(1); + String elm = elmMatch.group(2); + ElementPath element = new ElementPath(msg, elm); + AddWatchParameter parameter = new AddWatchParameter(elmMatch.group(1), element); + addWatchMessage(parameter); + } + }); + } else if (msgMatch.find()) { + Displays.pendInDisplayThread(new Runnable() { + @Override + public void run() { + addWatchMessage(new AddWatchParameter(msgMatch.group(1))); + } + }); + } + monitor.worked(1); + } + Displays.pendInDisplayThread(new Runnable() { + @Override + public void run() { + saveWatchFile(); + treeViewer.refresh(); + } + }); + monitor.worked(10); + + } + } + } catch (Throwable t) { + OseeLog.log(Activator.class, Level.SEVERE, "error loading watch file", t); + return org.eclipse.core.runtime.Status.CANCEL_STATUS; + } finally { + monitor.done(); + } + return org.eclipse.core.runtime.Status.OK_STATUS; + } + } + public void saveWatchFile() { saveWatchFile(watchFile); } @@ -952,6 +1005,8 @@ public final class WatchView extends ViewPart implements IActionable, IMessageDi @Override public void onDictionaryLoaded(final IMessageDictionary dictionary) { + messageFinder = new MessageFinder(dictionary); + Displays.ensureInDisplayThread(new Runnable() { @Override public void run() { |