JBoss Tools SVN: r34846 - trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/old.
by jbosstools-commits@lists.jboss.org
Author: koen.aers(a)jboss.com
Date: 2011-09-19 04:13:37 -0400 (Mon, 19 Sep 2011)
New Revision: 34846
Removed:
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/old/ConsolePartition.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/old/ConsolePartitioner.java
Log:
JBIDE-9735:
- remove the old ConsolePartitioner and ConsolePartition classes
Deleted: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/old/ConsolePartition.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/old/ConsolePartition.java 2011-09-19 08:08:38 UTC (rev 34845)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/old/ConsolePartition.java 2011-09-19 08:13:37 UTC (rev 34846)
@@ -1,167 +0,0 @@
-package org.jboss.tools.forge.old;
-
-import java.io.OutputStream;
-
-import org.eclipse.jface.text.ITypedRegion;
-import org.eclipse.swt.custom.StyleRange;
-import org.eclipse.ui.console.ConsolePlugin;
-import org.jboss.tools.forge.core.io.ForgeInputStream;
-
-public class ConsolePartition implements ITypedRegion {
- public static final String OUTPUT_PARTITION_TYPE = ConsolePlugin.getUniqueIdentifier() + ".io_console_output_partition_type"; //$NON-NLS-1$
- public static final String INPUT_PARTITION_TYPE = ConsolePlugin.getUniqueIdentifier() + ".io_console_input_partition_type"; //$NON-NLS-1$
-
- /**
- * The data contained by this partition.
- */
- private StringBuffer buffer;
- private String type;
- private int offset;
- /**
- * Output partitions are all read only.
- * Input partitions are read only once they have been appended to the console's input stream.
- */
- private boolean readOnly;
-
- /**
- * Only one of inputStream or outputStream will be null depending on the partitions type.
- */
- private OutputStream outputStream;
- @SuppressWarnings("unused")
- private ForgeInputStream inputStream;
- private int length;
-
- /**
- * Creates a new partition to contain output to console.
- */
- public ConsolePartition(OutputStream outputStream, int length) {
- this.outputStream = outputStream;
- this.length = length;
- this.type = OUTPUT_PARTITION_TYPE;
- this.readOnly = true;
- }
-
- /**
- * Creates a new partition to contain input from a console
- */
- public ConsolePartition(ForgeInputStream inputStream, String text) {
- this.inputStream = inputStream;
- buffer = new StringBuffer(text);
- length = text.length();
- this.type = INPUT_PARTITION_TYPE;
- this.readOnly = false;
- }
-
- /**
- * Inserts a string into this partition.
- * @param s The string to insert
- * @param offset the offset in the partition
- */
- public void insert(String s, int insertOffset) {
- buffer.insert(insertOffset, s);
- length += s.length();
- }
-
- /**
- * Deletes data from this partition.
- * @param delOffset
- * @param delLength
- */
- public void delete(int delOffset, int delLength) {
- buffer.delete(delOffset, delOffset+delLength);
- length -= delLength;
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.text.ITypedRegion#getType()
- */
- public String getType() {
- return type;
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.text.IRegion#getLength()
- */
- public int getLength() {
- return length;
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.text.IRegion#getOffset()
- */
- public int getOffset() {
- return offset;
- }
-
- /**
- * Sets this partitions offset in the document.
- *
- * @param offset This partitions offset in the document.
- */
- public void setOffset(int offset) {
- this.offset = offset;
- }
-
- /**
- * Sets this partition's length.
- *
- * @param length
- */
- public void setLength(int length) {
- this.length = length;
- }
-
- /**
- * Returns the data contained in this partition.
- * @return The data contained in this partition.
- */
- public String getString() {
- return buffer.toString();
- }
-
- /**
- * Returns a StyleRange object which may be used for setting the style
- * of this partition in a viewer.
- */
- public StyleRange getStyleRange(int rangeOffset, int rangeLength) {
- return new StyleRange(rangeOffset, rangeLength, null, null);
- }
-
- /**
- * Returns if this partition is read-only.
- *
- * @see org.eclipse.ui.console.IConsoleDocumentPartitioner#isReadOnly(int)
- * @return if this partition is read-only
- */
- public boolean isReadOnly() {
- return readOnly;
- }
-
- /**
- * Sets the read-only state of this partition to <code>true</code>.
- *
- * @see org.eclipse.ui.console.IConsoleDocumentPartitioner#isReadOnly(int)
- */
- public void setReadOnly() {
- readOnly = true;
- }
-
- /**
- * Clears the contents of the buffer
- */
- public void clearBuffer() {
- buffer.setLength(0);
- }
-
- /**
- * Returns the underlying output stream
- *
- * @return the underlying output stream
- */
- OutputStream getStream() {
- return outputStream;
- }
-}
Deleted: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/old/ConsolePartitioner.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/old/ConsolePartitioner.java 2011-09-19 08:08:38 UTC (rev 34845)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/old/ConsolePartitioner.java 2011-09-19 08:13:37 UTC (rev 34846)
@@ -1,697 +0,0 @@
-package org.jboss.tools.forge.old;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobManager;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IDocumentPartitionerExtension;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.ITypedRegion;
-import org.eclipse.jface.text.Region;
-import org.eclipse.swt.custom.StyleRange;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.console.ConsolePlugin;
-import org.eclipse.ui.console.IConsoleDocumentPartitioner;
-import org.eclipse.ui.progress.UIJob;
-import org.eclipse.ui.progress.WorkbenchJob;
-import org.jboss.tools.forge.core.io.ForgeInputStream;
-import org.jboss.tools.forge.ui.console.Console;
-
-/**
- * Partitions an IOConsole's document
- * @since 3.1
- *
- */
-@SuppressWarnings(value = { "rawtypes", "unchecked" })
-public class ConsolePartitioner implements IConsoleDocumentPartitioner, IDocumentPartitionerExtension {
-
- private PendingPartition consoleClosedPartition;
- private IDocument document;
- private ArrayList partitions;
- /**
- * Blocks of data that have not yet been appended to the document.
- */
- private ArrayList pendingPartitions;
- /**
- * A list of PendingPartitions to be appended by the updateJob
- */
- private ArrayList updatePartitions;
- /**
- * The last partition appended to the document
- */
- private ConsolePartition lastPartition;
- /**
- * Job that appends pending partitions to the document.
- */
- private QueueProcessingJob queueJob;
- /**
- * The input stream attached to this document.
- */
- private ForgeInputStream inputStream;
- /**
- * Flag to indicate that the updateJob is updating the document.
- */
- private boolean updateInProgress;
- /**
- * A list of partitions containing input from the console, that have
- * not been appended to the input stream yet.
- */
- private ArrayList inputPartitions;
- /**
- * offset used by updateJob
- */
- private int firstOffset;
- /**
- * An array of legal line delimiters
- */
- @SuppressWarnings("unused")
- private String[] lld;
- private int highWaterMark = -1;
- private int lowWaterMark = -1;
- private boolean connected = false;
-
- private Console console;
-
- private TrimJob trimJob = new TrimJob();
- /**
- * Lock for appending to and removing from the document - used
- * to synchronize addition of new text/partitions in the update
- * job and handling buffer overflow/clearing of the console.
- */
- private Object overflowLock = new Object();
-
-
- private int fBuffer;
-
- private ConsolePartitioner(ForgeInputStream inputStream, Console console) {
- this.inputStream = inputStream;
- this.console = console;
- trimJob.setRule(console.getSchedulingRule());
- }
-
- public IDocument getDocument() {
- return document;
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.text.IDocumentPartitioner#connect(org.eclipse.jface.text.IDocument)
- */
- public void connect(IDocument doc) {
- document = doc;
- document.setDocumentPartitioner(this);
- lld = document.getLegalLineDelimiters();
- partitions = new ArrayList();
- pendingPartitions = new ArrayList();
- inputPartitions = new ArrayList();
- queueJob = new QueueProcessingJob();
- queueJob.setSystem(true);
- queueJob.setPriority(Job.INTERACTIVE);
- queueJob.setRule(console.getSchedulingRule());
- connected = true;
- }
-
- public int getHighWaterMark() {
- return highWaterMark;
- }
-
- public int getLowWaterMark() {
- return lowWaterMark;
- }
-
- public void setWaterMarks(int low, int high) {
- lowWaterMark = low;
- highWaterMark = high;
- ConsolePlugin.getStandardDisplay().asyncExec(new Runnable() {
- public void run() {
- checkBufferSize();
- }
- });
- }
-
- /**
- * Notification from the console that all of its streams have been closed.
- */
- public void streamsClosed() {
- consoleClosedPartition = new PendingPartition(null, null);
- synchronized (pendingPartitions) {
- pendingPartitions.add(consoleClosedPartition);
- }
- queueJob.schedule(); //ensure that all pending partitions are processed.
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.text.IDocumentPartitioner#disconnect()
- */
- public void disconnect() {
- synchronized (overflowLock) {
- document = null;
- partitions.clear();
- connected = false;
- try {
- inputStream.close();
- } catch (IOException e) {
- }
- }
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.text.IDocumentPartitioner#documentAboutToBeChanged(org.eclipse.jface.text.DocumentEvent)
- */
- public void documentAboutToBeChanged(DocumentEvent event) {
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.text.IDocumentPartitioner#documentChanged(org.eclipse.jface.text.DocumentEvent)
- */
- public boolean documentChanged(DocumentEvent event) {
- return documentChanged2(event) != null;
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.text.IDocumentPartitioner#getLegalContentTypes()
- */
- public String[] getLegalContentTypes() {
- return new String[] { ConsolePartition.OUTPUT_PARTITION_TYPE, ConsolePartition.INPUT_PARTITION_TYPE };
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.text.IDocumentPartitioner#getContentType(int)
- */
- public String getContentType(int offset) {
- return getPartition(offset).getType();
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.text.IDocumentPartitioner#computePartitioning(int, int)
- */
- public ITypedRegion[] computePartitioning(int offset, int length) {
- int rangeEnd = offset + length;
- int left= 0;
- int right= partitions.size() - 1;
- int mid= 0;
- ConsolePartition position= null;
-
- if (left == right) {
- return new ConsolePartition[]{(ConsolePartition) partitions.get(0)};
- }
- while (left < right) {
-
- mid= (left + right) / 2;
-
- position= (ConsolePartition) partitions.get(mid);
- if (rangeEnd < position.getOffset()) {
- if (left == mid)
- right= left;
- else
- right= mid -1;
- } else if (offset > (position.getOffset() + position.getLength() - 1)) {
- if (right == mid)
- left= right;
- else
- left= mid +1;
- } else {
- left= right= mid;
- }
- }
-
-
- List list = new ArrayList();
- int index = left - 1;
- if (index >= 0) {
- position= (ConsolePartition) partitions.get(index);
- while (index >= 0 && (position.getOffset() + position.getLength()) > offset) {
- index--;
- if (index >= 0) {
- position= (ConsolePartition) partitions.get(index);
- }
- }
- }
- index++;
- position= (ConsolePartition) partitions.get(index);
- while (index < partitions.size() && (position.getOffset() < rangeEnd)) {
- list.add(position);
- index++;
- if (index < partitions.size()) {
- position= (ConsolePartition) partitions.get(index);
- }
- }
-
- return (ITypedRegion[]) list.toArray(new ConsolePartition[list.size()]);
- }
-
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.text.IDocumentPartitioner#getPartition(int)
- */
- public ITypedRegion getPartition(int offset) {
- for (int i = 0; i < partitions.size(); i++) {
- ITypedRegion partition = (ITypedRegion) partitions.get(i);
- int start = partition.getOffset();
- int end = start + partition.getLength();
- if (offset >= start && offset < end) {
- return partition;
- }
- }
-
- if (lastPartition == null) {
- synchronized(partitions) {
- lastPartition = new ConsolePartition(inputStream, ""); //$NON-NLS-1$
- lastPartition.setOffset(offset);
- partitions.add(lastPartition);
- inputPartitions.add(lastPartition);
- }
- }
- return lastPartition;
- }
-
- /**
- * Enforces the buffer size.
- * When the number of lines in the document exceeds the high water mark, the
- * beginning of the document is trimmed until the number of lines equals the
- * low water mark.
- */
- private void checkBufferSize() {
- if (document != null && highWaterMark > 0) {
- int length = document.getLength();
- if (length > highWaterMark) {
- if (trimJob.getState() == Job.NONE) { //if the job isn't already running
- trimJob.setOffset(length - lowWaterMark);
- trimJob.schedule();
- }
- }
- }
- }
-
- /**
- * Clears the console
- */
- public void clearBuffer() {
- synchronized (overflowLock) {
- trimJob.setOffset(-1);
- trimJob.schedule();
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.text.IDocumentPartitionerExtension#documentChanged2(org.eclipse.jface.text.DocumentEvent)
- */
- public IRegion documentChanged2(DocumentEvent event) {
- System.out.println("documentChanged2 : " + event.fText);
- if (document == null) {
- return null; //another thread disconnected the partitioner
- }
- if (document.getLength() == 0) { //document cleared
- if (lastPartition != null && lastPartition.getType().equals(ConsolePartition.INPUT_PARTITION_TYPE)) {
- synchronized (partitions) {
- partitions.remove(lastPartition);
- inputPartitions.remove(lastPartition);
- }
- }
- lastPartition = null;
- return new Region(0, 0);
- }
-
-
- if (updateInProgress) {
- synchronized(partitions) {
- if (updatePartitions != null) {
- for (Iterator i = updatePartitions.iterator(); i.hasNext(); ) {
- PendingPartition pp = (PendingPartition) i.next();
- if (pp == consoleClosedPartition) {
- continue;
- }
-
- int ppLen = pp.text.length();
- if (lastPartition != null && lastPartition.getStream() == pp.stream) {
- int len = lastPartition.getLength();
- lastPartition.setLength(len + ppLen);
- } else {
- ConsolePartition partition = new ConsolePartition(pp.stream, ppLen);
- partition.setOffset(firstOffset);
- lastPartition = partition;
- partitions.add(partition);
- }
- firstOffset += ppLen;
- }
- }
- }
- } else {// user input.
- int amountDeleted = event.getLength() ;
-
- if (amountDeleted > 0) {
- int offset = event.fOffset;
- ConsolePartition partition = (ConsolePartition) getPartition(offset);
- if(partition == lastPartition) {
- partition.delete(event.fOffset-partition.getOffset(), amountDeleted);
- }
- }
-
- synchronized(partitions) {
- if (lastPartition == null || lastPartition.isReadOnly()) {
- lastPartition = new ConsolePartition(inputStream, event.fText);
- lastPartition.setOffset(event.fOffset);
- partitions.add(lastPartition);
- inputPartitions.add(lastPartition);
- } else {
- lastPartition.insert(event.fText, (event.fOffset-lastPartition.getOffset()));
- }
-
- int lastLineDelimiter = -1;
- String partitionText = lastPartition.getString();
- lastLineDelimiter = partitionText.length();
-// for (int i = 0; i < lld.length; i++) {
-// String ld = lld[i];
-// int index = partitionText.lastIndexOf(ld);
-// if (index != -1) {
-// index += ld.length();
-// }
-// if (index > lastLineDelimiter) {
-// lastLineDelimiter = index;
-// }
-// }
- if (lastLineDelimiter != -1) {
- StringBuffer input = new StringBuffer();
- Iterator it = inputPartitions.iterator();
- while (it.hasNext()) {
- ConsolePartition partition = (ConsolePartition) it.next();
- if (partition.getOffset() + partition.getLength() <= event.fOffset + lastLineDelimiter) {
- if (partition == lastPartition) {
- lastPartition = null;
- }
- input.append(partition.getString());
- partition.clearBuffer();
- partition.setReadOnly();
- it.remove();
- } else {
- //create a new partition containing everything up to the line delimiter
- //and append that to the string buffer.
- String contentBefore = partitionText.substring(0, lastLineDelimiter);
- ConsolePartition newPartition = new ConsolePartition(inputStream, contentBefore);
- newPartition.setOffset(partition.getOffset());
- newPartition.setReadOnly();
- newPartition.clearBuffer();
- int index = partitions.indexOf(partition);
- partitions.add(index, newPartition);
- input.append(contentBefore);
- //delete everything that has been appended to the buffer.
- partition.delete(0, lastLineDelimiter);
- partition.setOffset(lastLineDelimiter + partition.getOffset());
- lastLineDelimiter = 0;
- }
- }
- if (input.length() > 0) {
- System.out.println("append text not!");
- //inputStream.appendData(input.toString());
- }
-
- }
- }
- }
-
- return new Region(event.fOffset, event.fText.length());
- }
-
- private void setUpdateInProgress(boolean b) {
- updateInProgress = b;
- }
-
- /**
- * A stream has been appended, add to pendingPartions list and schedule updateJob.
- * updateJob is scheduled with a slight delay, this allows the console to run the job
- * less frequently and update the document with a greater amount of data each time
- * the job is run
- * @param stream The stream that was written to.
- * @param s The string that should be appended to the document.
- */
- public void streamAppended(OutputStream stream, String s) throws IOException {
- System.out.println("streamAppended : " + s);
- if (s.indexOf('\t') != -1) System.out.println("Got a tab!");
- if (document == null) {
- throw new IOException("Document is closed"); //$NON-NLS-1$
- }
- synchronized(pendingPartitions) {
- PendingPartition last = (PendingPartition) (pendingPartitions.size() > 0 ? pendingPartitions.get(pendingPartitions.size()-1) : null);
- if (last != null && last.stream == stream) {
- last.append(s);
- } else {
- pendingPartitions.add(new PendingPartition(stream, s));
- if (fBuffer > 1000) {
- queueJob.schedule();
- } else {
- queueJob.schedule(50);
- }
- }
-
- if (fBuffer > 160000) {
- if(Display.getCurrent() == null){
- try {
- pendingPartitions.wait();
- } catch (InterruptedException e) {
- }
- } else {
- /*
- * if we are in UI thread we cannot lock it, so process
- * queued output.
- */
- processQueue();
- }
- }
- }
- }
-
- /**
- * Holds data until updateJob can be run and the document can be updated.
- */
- private class PendingPartition {
- StringBuffer text = new StringBuffer(8192);
- OutputStream stream;
-
- PendingPartition(OutputStream stream, String text) {
- this.stream = stream;
- if (text != null) {
- append(text);
- }
- }
-
- void append(String moreText) {
- text.append(moreText);
- fBuffer += moreText.length();
- }
- }
-
- /**
- * Updates the document. Will append everything that is available before
- * finishing.
- */
- private class QueueProcessingJob extends UIJob {
-
- QueueProcessingJob() {
- super("IOConsole Updater"); //$NON-NLS-1$
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.core.internal.jobs.InternalJob#run(org.eclipse.core.runtime.IProgressMonitor)
- */
- public IStatus runInUIThread(IProgressMonitor monitor) {
- processQueue();
- return Status.OK_STATUS;
- }
-
- /*
- * Job will process as much as it can each time it's run, but it gets
- * scheduled everytime a PendingPartition is added to the list, meaning
- * that this job could get scheduled unnecessarily in cases of heavy output.
- * Note however, that schedule() will only reschedule a running/scheduled Job
- * once even if it's called many times.
- */
- public boolean shouldRun() {
- boolean shouldRun = connected && pendingPartitions != null && pendingPartitions.size() > 0;
- return shouldRun;
- }
- }
-
- void processQueue() {
- synchronized (overflowLock) {
- ArrayList pendingCopy = new ArrayList();
- StringBuffer buffer = null;
- boolean consoleClosed = false;
- synchronized(pendingPartitions) {
- pendingCopy.addAll(pendingPartitions);
- pendingPartitions.clear();
- fBuffer = 0;
- pendingPartitions.notifyAll();
- }
- // determine buffer size
- int size = 0;
- for (Iterator i = pendingCopy.iterator(); i.hasNext(); ) {
- PendingPartition pp = (PendingPartition) i.next();
- if (pp != consoleClosedPartition) {
- size+= pp.text.length();
- }
- }
- buffer = new StringBuffer(size);
- for (Iterator i = pendingCopy.iterator(); i.hasNext(); ) {
- PendingPartition pp = (PendingPartition) i.next();
- if (pp != consoleClosedPartition) {
- buffer.append(pp.text);
- } else {
- consoleClosed = true;
- }
- }
-
- if (connected) {
- setUpdateInProgress(true);
- updatePartitions = pendingCopy;
- firstOffset = document.getLength();
- try {
- if (buffer != null) {
- document.replace(firstOffset, 0, buffer.toString());
- }
- } catch (BadLocationException e) {
- }
- updatePartitions = null;
- setUpdateInProgress(false);
- }
- if (consoleClosed) {
- console.partitionerFinished();
- }
- checkBufferSize();
- }
-
- }
-
- /**
- * Job to trim the console document, runs in the UI thread.
- */
- private class TrimJob extends WorkbenchJob {
-
- /**
- * trims output up to the line containing the given offset,
- * or all output if -1.
- */
- private int truncateOffset;
-
- /**
- * Creates a new job to trim the buffer.
- */
- TrimJob() {
- super("Trim Job"); //$NON-NLS-1$
- setSystem(true);
- }
-
- /**
- * Sets the trim offset.
- *
- * @param offset trims output up to the line containing the given offset
- */
- public void setOffset(int offset) {
- truncateOffset = offset;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
- */
- public IStatus runInUIThread(IProgressMonitor monitor) {
- IJobManager jobManager = Job.getJobManager();
- try {
- jobManager.join(console, monitor);
- } catch (OperationCanceledException e1) {
- return Status.CANCEL_STATUS;
- } catch (InterruptedException e1) {
- return Status.CANCEL_STATUS;
- }
- if (document == null) {
- return Status.OK_STATUS;
- }
-
- int length = document.getLength();
- if (truncateOffset < length) {
- synchronized (overflowLock) {
- try {
- if (truncateOffset < 0) {
- // clear
- setUpdateInProgress(true);
- document.set(""); //$NON-NLS-1$
- setUpdateInProgress(false);
- partitions.clear();
- } else {
- // overflow
- int cutoffLine = document.getLineOfOffset(truncateOffset);
- int cutOffset = document.getLineOffset(cutoffLine);
-
-
- // set the new length of the first partition
- ConsolePartition partition = (ConsolePartition) getPartition(cutOffset);
- partition.setLength(partition.getOffset() + partition.getLength() - cutOffset);
-
- setUpdateInProgress(true);
- document.replace(0, cutOffset, ""); //$NON-NLS-1$
- setUpdateInProgress(false);
-
- //remove partitions and reset Partition offsets
- int index = partitions.indexOf(partition);
- for (int i = 0; i < index; i++) {
- partitions.remove(0);
- }
-
- int offset = 0;
- for (Iterator i = partitions.iterator(); i.hasNext(); ) {
- ConsolePartition p = (ConsolePartition) i.next();
- p.setOffset(offset);
- offset += p.getLength();
- }
- }
- } catch (BadLocationException e) {
- }
- }
- }
- return Status.OK_STATUS;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.console.IConsoleDocumentPartitioner#isReadOnly(int)
- */
- public boolean isReadOnly(int offset) {
- return ((ConsolePartition)getPartition(offset)).isReadOnly();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.console.IConsoleDocumentPartitioner#computeStyleRange(int, int)
- */
- public StyleRange[] getStyleRanges(int offset, int length) {
- if (!connected) {
- return new StyleRange[0];
- }
- ConsolePartition[] computedPartitions = (ConsolePartition[])computePartitioning(offset, length);
- StyleRange[] styles = new StyleRange[computedPartitions.length];
- for (int i = 0; i < computedPartitions.length; i++) {
- int rangeStart = Math.max(computedPartitions[i].getOffset(), offset);
- int rangeLength = computedPartitions[i].getLength();
- styles[i] = computedPartitions[i].getStyleRange(rangeStart, rangeLength);
- }
- return styles;
- }
-}
14 years, 6 months
JBoss Tools SVN: r34845 - in trunk/forge/plugins/org.jboss.tools.forge.ui: src/org/jboss/tools/forge/ui/action and 4 other directories.
by jbosstools-commits@lists.jboss.org
Author: koen.aers(a)jboss.com
Date: 2011-09-19 04:08:38 -0400 (Mon, 19 Sep 2011)
New Revision: 34845
Added:
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/action/StartDelegate.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/action/StopDelegate.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeDocument.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeTextViewer.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/part/ForgeView.java
Removed:
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/action/StartDelegate.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/action/StopDelegate.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/Console.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ConsolePage.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ConsolePartitioner.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ConsoleViewer.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeInputReadJob.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/part/ConsoleView.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeDocument.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeTextViewer.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeView.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/StartDelegate.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/StopDelegate.java
Modified:
trunk/forge/plugins/org.jboss.tools.forge.ui/plugin.xml
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/commands/ForgeCommandListHandler.java
Log:
JBIDE-9735:
- remove the old Console, ConsolePage, ConsolePartitioner, ConsoleViewer classes
- remove ForgeInputReadJob
- move ForgeTextViewer and ForgeDocument
- move StartDelegate and StopDelegate
Modified: trunk/forge/plugins/org.jboss.tools.forge.ui/plugin.xml
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/plugin.xml 2011-09-19 07:56:48 UTC (rev 34844)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/plugin.xml 2011-09-19 08:08:38 UTC (rev 34845)
@@ -9,7 +9,7 @@
</category>
<view
category="org.jboss.tools.forge"
- class="org.jboss.tools.forge.ui.trials.ForgeView"
+ class="org.jboss.tools.forge.ui.part.ForgeView"
id="org.jboss.tools.forge.console"
name="Forge Console"
restorable="true">
@@ -50,7 +50,7 @@
toolbarPath="org.jboss.tools.forge.toolbar">
</action> -->
<action
- class="org.jboss.tools.forge.ui.trials.StopDelegate"
+ class="org.jboss.tools.forge.ui.action.StopDelegate"
icon="icons/stop.gif"
id="org.jboss.tools.forge.stop"
label="Stop Forge"
@@ -59,7 +59,7 @@
toolbarPath="org.jboss.tools.forge.toolbar">
</action>
<action
- class="org.jboss.tools.forge.ui.trials.StartDelegate"
+ class="org.jboss.tools.forge.ui.action.StartDelegate"
icon="icons/start.gif"
id="org.jboss.tools.forge.start"
label="Start Forge"
Deleted: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/action/StartDelegate.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/action/StartDelegate.java 2011-09-19 07:56:48 UTC (rev 34844)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/action/StartDelegate.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -1,28 +0,0 @@
-package org.jboss.tools.forge.ui.action;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IViewActionDelegate;
-import org.eclipse.ui.IViewPart;
-import org.jboss.tools.forge.ui.part.ConsoleView;
-
-public class StartDelegate implements IViewActionDelegate {
-
- @Override
- public void run(IAction action) {
- ConsoleView.INSTANCE.startForge();
- }
-
- @Override
- public void selectionChanged(IAction action, ISelection selection) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void init(IViewPart view) {
- // TODO Auto-generated method stub
-
- }
-
-}
Copied: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/action/StartDelegate.java (from rev 34844, trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/StartDelegate.java)
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/action/StartDelegate.java (rev 0)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/action/StartDelegate.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -0,0 +1,28 @@
+package org.jboss.tools.forge.ui.action;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+import org.jboss.tools.forge.ui.part.ForgeView;
+
+public class StartDelegate implements IViewActionDelegate {
+
+ @Override
+ public void run(IAction action) {
+ ForgeView.INSTANCE.startForge();
+ }
+
+ @Override
+ public void selectionChanged(IAction action, ISelection selection) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void init(IViewPart view) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
Deleted: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/action/StopDelegate.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/action/StopDelegate.java 2011-09-19 07:56:48 UTC (rev 34844)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/action/StopDelegate.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -1,28 +0,0 @@
-package org.jboss.tools.forge.ui.action;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IViewActionDelegate;
-import org.eclipse.ui.IViewPart;
-import org.jboss.tools.forge.ui.part.ConsoleView;
-
-public class StopDelegate implements IViewActionDelegate {
-
- @Override
- public void run(IAction action) {
- ConsoleView.INSTANCE.stopForge();
- }
-
- @Override
- public void selectionChanged(IAction action, ISelection selection) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void init(IViewPart view) {
- // TODO Auto-generated method stub
-
- }
-
-}
Copied: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/action/StopDelegate.java (from rev 34844, trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/StopDelegate.java)
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/action/StopDelegate.java (rev 0)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/action/StopDelegate.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -0,0 +1,28 @@
+package org.jboss.tools.forge.ui.action;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+import org.jboss.tools.forge.ui.part.ForgeView;
+
+public class StopDelegate implements IViewActionDelegate {
+
+ @Override
+ public void run(IAction action) {
+ ForgeView.INSTANCE.stopForge();
+ }
+
+ @Override
+ public void selectionChanged(IAction action, ISelection selection) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void init(IViewPart view) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
Modified: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/commands/ForgeCommandListHandler.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/commands/ForgeCommandListHandler.java 2011-09-19 07:56:48 UTC (rev 34844)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/commands/ForgeCommandListHandler.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -7,7 +7,7 @@
import org.eclipse.ui.handlers.HandlerUtil;
import org.jboss.tools.forge.core.process.ForgeRuntime;
import org.jboss.tools.forge.ui.dialog.ForgeCommandListDialog;
-import org.jboss.tools.forge.ui.trials.ForgeView;
+import org.jboss.tools.forge.ui.part.ForgeView;
public class ForgeCommandListHandler extends AbstractHandler {
Deleted: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/Console.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/Console.java 2011-09-19 07:56:48 UTC (rev 34844)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/Console.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -1,192 +0,0 @@
-package org.jboss.tools.forge.ui.console;
-
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.io.IOException;
-
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.console.IConsoleDocumentPartitioner;
-import org.eclipse.ui.console.IConsoleView;
-import org.eclipse.ui.console.TextConsole;
-import org.eclipse.ui.part.IPageBookViewPage;
-import org.jboss.tools.forge.core.io.ForgeHiddenOutputFilter;
-import org.jboss.tools.forge.core.io.ForgeInputStream;
-import org.jboss.tools.forge.core.io.ForgeOutputListener;
-import org.jboss.tools.forge.core.process.ForgeRuntime;
-import org.jboss.tools.forge.ui.ForgeUIPlugin;
-
-public class Console extends TextConsole {
-
- private ConsolePartitioner partitioner;
- private ForgeInputStream inputStream;
- private RuntimeStopListener stopListener;
- private ForgeOutputListener outputListener;
- private ForgeRuntime runtime;
-
-
- public Console(ForgeRuntime runtime) {
- super("Forge Console", null, null, true);
- this.runtime = runtime;
- initialize();
- }
-
- protected void init() {
- super.init();
- initInputStream();
- initPartitioner();
- initCommandRecorder();
- initOutputListener();
- initStopListener();
- initInputReadJob();
- }
-
- private void initCommandRecorder() {
- getDocument().addDocumentListener(new CommandRecorder());
- }
-
- private void initInputStream() {
- inputStream = new ForgeInputStream();
- }
-
- private void initStopListener() {
- stopListener = new RuntimeStopListener();
- runtime.addPropertyChangeListener(stopListener);
- }
-
- private void initOutputListener() {
- ForgeOutputListener target = new ForgeOutputListener() {
- @Override
- public void outputAvailable(String output) {
- appendString(output);
- }
- };
- outputListener = new ForgeHiddenOutputFilter(target) {
- @Override
- public void handleFilteredString(String str) {
- System.out.println("handleHiddenOutput : " + str);
- }
- };
- runtime.addOutputListener(outputListener);
- }
-
- private void initInputReadJob() {
- ForgeInputReadJob inputReadJob = new ForgeInputReadJob(runtime, inputStream);
- inputReadJob.setSystem(true);
- inputReadJob.schedule();
- }
-
- private void initPartitioner() {
- partitioner = new ConsolePartitioner();
- partitioner.connect(getDocument());
- }
-
- public IPageBookViewPage createPage(IConsoleView view) {
- throw new UnsupportedOperationException();
- }
-
- protected IConsoleDocumentPartitioner getPartitioner() {
- return partitioner;
- }
-
- public void dispose() {
- if (!ForgeRuntime.STATE_NOT_RUNNING.equals(runtime.getState())) {
- runtime.stop(null);
- }
- super.dispose();
- }
-
- private void handleRuntimeStopped() {
- try {
- runtime.removePropertyChangeListener(stopListener);
- stopListener = null;
- runtime.removeOutputListener(outputListener);
- outputListener = null;
- partitioner.disconnect();
- inputStream.close();
- inputStream = null;
- } catch (IOException e) {
- ForgeUIPlugin.log(e);
- }
- }
-
-
- private int lastLineLength = 0;
- private int lastLinePosition = 0;
- private StringBuffer escapeSequence = new StringBuffer();
- private boolean escapeSequenceStarted = false;
-// private boolean metaDataSequenceStarted = false;
-
- public void appendString(final String str) {
- Display.getDefault().asyncExec(new Runnable() {
- @Override
- public void run() {
- try {
- for (int i = 0; i < str.length(); i++) {
- char c = str.charAt(i);
- if (c == '\r') continue; //ignore
- if (c == '[' && escapeSequenceStarted) continue;
- if (c == 27) {
- escapeSequenceStarted = true;
- continue;
- }
- if (escapeSequenceStarted) {
- int type = Character.getType(c);
-// if (!metaDataSequenceStarted && (type == Character.LOWERCASE_LETTER || type == Character.UPPERCASE_LETTER)) {
- if (type == Character.LOWERCASE_LETTER || type == Character.UPPERCASE_LETTER) {
- if (c == 'G') {
- int columnNumber = Integer.valueOf(escapeSequence.toString());
- lastLineLength = columnNumber - 1;
- escapeSequence.setLength(0);
- escapeSequenceStarted = false;
- } else if (c == 'K') {
- int doclength = getDocument().getLength();
- int currentPosition = lastLinePosition + lastLineLength;
- getDocument().replace(currentPosition, doclength - currentPosition, "");
- escapeSequence.setLength(0);
- escapeSequenceStarted = false;
-// } else if (c == 'm') {
-//
- }
-// } else if (c == '%') {
-// if (metaDataSequenceStarted) {
-// metaDataSequenceStarted = false;
-// escapeSequenceStarted = false;
-// handleMetaData(escapeSequence.toString());
-// escapeSequence.setLength(0);
-// } else {
-// metaDataSequenceStarted = true;
-// }
- } else {
- escapeSequence.append(c);
- }
- continue;
- }
- if (str.charAt(i) == '\b') {
- getDocument().replace(getDocument().getLength() - 1, 1, "");
- lastLineLength--;
- } else {
- getDocument().replace(getDocument().getLength(), 0, str.substring(i, i + 1));
- lastLineLength++;
- }
- if (c == '\n') {
- lastLineLength = 0;
- lastLinePosition = getDocument().getLength();
- }
- }
- } catch (BadLocationException e) {}
- }
- });
- }
-
- private class RuntimeStopListener implements PropertyChangeListener {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if (ForgeRuntime.PROPERTY_STATE.equals(evt.getPropertyName()) &&
- ForgeRuntime.STATE_NOT_RUNNING.equals(evt.getNewValue())) {
- handleRuntimeStopped();
- }
- }
- }
-
-}
Deleted: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ConsolePage.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ConsolePage.java 2011-09-19 07:56:48 UTC (rev 34844)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ConsolePage.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -1,33 +0,0 @@
-package org.jboss.tools.forge.ui.console;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.console.TextConsoleViewer;
-import org.eclipse.ui.part.Page;
-import org.jboss.tools.forge.core.process.ForgeRuntime;
-
-public class ConsolePage extends Page {
-
- private TextConsoleViewer viewer;
- private ForgeRuntime runtime;
-
- public ConsolePage(ForgeRuntime runtime) {
- this.runtime = runtime;
- }
-
- @Override
- public void createControl(Composite parent) {
- viewer = new ConsoleViewer(parent, runtime);
- }
-
- @Override
- public Control getControl() {
- return viewer == null ? null : viewer.getControl();
- }
-
- @Override
- public void setFocus() {
- viewer.getControl().setFocus();
- }
-
-}
Deleted: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ConsolePartitioner.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ConsolePartitioner.java 2011-09-19 07:56:48 UTC (rev 34844)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ConsolePartitioner.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -1,69 +0,0 @@
-package org.jboss.tools.forge.ui.console;
-
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITypedRegion;
-import org.eclipse.swt.custom.StyleRange;
-import org.eclipse.ui.console.IConsoleDocumentPartitioner;
-
-public class ConsolePartitioner implements IConsoleDocumentPartitioner {
-
- @Override
- public void connect(IDocument document) {
-// System.out.println("connect");
- document.setDocumentPartitioner(this);
- }
-
- @Override
- public void disconnect() {
-// System.out.println("disconnect");
- }
-
- @Override
- public void documentAboutToBeChanged(DocumentEvent event) {
-// System.out.println("documentAboutToBeChanged");
- }
-
- @Override
- public boolean documentChanged(DocumentEvent event) {
-// System.out.println("documentChanged");
- return false;
- }
-
- @Override
- public String[] getLegalContentTypes() {
-// System.out.println("getLegalContentTypes");
- return null;
- }
-
- @Override
- public String getContentType(int offset) {
-// System.out.println("getContentType");
- return null;
- }
-
- @Override
- public ITypedRegion[] computePartitioning(int offset, int length) {
-// System.out.println("computePartitioning");
- return null;
- }
-
- @Override
- public ITypedRegion getPartition(int offset) {
-// System.out.println("getPartition");
- return null;
- }
-
- @Override
- public boolean isReadOnly(int offset) {
-// System.out.println("isReadOnly");
- return false;
- }
-
- @Override
- public StyleRange[] getStyleRanges(int offset, int length) {
-// System.out.println("getStyleRanges : [offset, " + offset + "] [length, " + length + "]");
- return null;
- }
-
-}
Deleted: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ConsoleViewer.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ConsoleViewer.java 2011-09-19 07:56:48 UTC (rev 34844)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ConsoleViewer.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -1,91 +0,0 @@
-package org.jboss.tools.forge.ui.console;
-
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocumentListener;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.VerifyEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.console.TextConsoleViewer;
-import org.jboss.tools.forge.core.process.ForgeRuntime;
-
-public class ConsoleViewer extends TextConsoleViewer {
-
- private static String BACKSPACE = new Character('\b').toString();
- private static String UP_ARROW = new Character((char)16).toString();
- private static String DOWN_ARROW = new Character((char)14).toString();
-
- private ForgeRuntime runtime = null;
-
- public ConsoleViewer(Composite parent, ForgeRuntime runtime) {
- super(parent, new Console(runtime));
- this.runtime = runtime;
- getDocument().addDocumentListener(new DocumentListener());
- }
-
- protected void handleVerifyEvent(VerifyEvent e) {
- runtime.sendInput(e.text);
- e.doit = false;
- }
-
- private void handleBackspace() {
- runtime.sendInput(BACKSPACE);
- }
-
- private void handleArrowUp() {
- runtime.sendInput(UP_ARROW);
- }
-
- private void handleArrowDown() {
- runtime.sendInput(DOWN_ARROW);
- }
-
- private void handleF1Down() {
- runtime.sendInput(new Character((char)31).toString() + "hidden command!\n"); // + (char)27 + "[%\n");
- }
-
- protected StyledText createTextWidget(Composite parent, int styles) {
- StyledText styledText = super.createTextWidget(parent, styles | SWT.WRAP);
- styledText.addKeyListener(new ConsoleKeyListener());
- return styledText;
- }
-
- private class DocumentListener implements IDocumentListener {
-
- public void documentAboutToBeChanged(DocumentEvent event) {
- }
-
-
- public void documentChanged(DocumentEvent event) {
- revealEndOfDocument();
- Control control = getControl();
- if (control instanceof StyledText) {
- StyledText text = (StyledText)control;
- text.setCaretOffset(text.getCharCount());
- }
- }
- }
-
- private class ConsoleKeyListener implements KeyListener {
-
- public void keyPressed(KeyEvent e) {
- }
-
- public void keyReleased(KeyEvent e) {
- if (e.keyCode == SWT.BS) {
- handleBackspace();
- } else if (e.keyCode == SWT.ARROW_UP) {
- handleArrowUp();
- } else if (e.keyCode == SWT.ARROW_DOWN) {
- handleArrowDown();
- } else if (e.keyCode == SWT.F1) {
- handleF1Down();
- }
- }
-
- }
-
-}
Copied: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeDocument.java (from rev 34844, trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeDocument.java)
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeDocument.java (rev 0)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeDocument.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -0,0 +1,28 @@
+package org.jboss.tools.forge.ui.console;
+
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.Document;
+import org.eclipse.swt.widgets.Display;
+
+public class ForgeDocument extends Document {
+
+ public void appendString(final String str) {
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ for (int i = 0; i < str.length(); i++) {
+ char c = str.charAt(i);
+ if (c == '\r') continue; //ignore
+ if (str.charAt(i) == '\b') {
+ replace(getLength() - 1, 1, "");
+ } else {
+ replace(getLength(), 0, str.substring(i, i + 1));
+ }
+ }
+ } catch (BadLocationException e) {}
+ }
+ });
+ }
+
+}
Deleted: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeInputReadJob.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeInputReadJob.java 2011-09-19 07:56:48 UTC (rev 34844)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeInputReadJob.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -1,38 +0,0 @@
-package org.jboss.tools.forge.ui.console;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.jboss.tools.forge.core.ForgeCorePlugin;
-import org.jboss.tools.forge.core.process.ForgeRuntime;
-
-public class ForgeInputReadJob extends Job {
-
- private ForgeRuntime runtime;
- private InputStream input;
-
- public ForgeInputReadJob(ForgeRuntime runtime, InputStream input) {
- super("Forge Input Read Job");
- this.input = input;
- this.runtime = runtime;
- }
-
- protected IStatus run(IProgressMonitor monitor) {
- try {
- int read;
- while (input != null && (read = input.read()) != -1) {
- runtime.sendInput(new String(new char[] { (char)read }));
- }
- } catch (IOException e) {
- ForgeCorePlugin.log(e);
- }
- return Status.OK_STATUS;
- }
-
-
-
-}
Copied: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeTextViewer.java (from rev 34844, trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeTextViewer.java)
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeTextViewer.java (rev 0)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeTextViewer.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -0,0 +1,200 @@
+package org.jboss.tools.forge.ui.console;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.DocumentEvent;
+import org.eclipse.jface.text.IDocumentListener;
+import org.eclipse.jface.text.TextViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.VerifyEvent;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.jboss.tools.forge.core.io.ForgeAnsiCommandFilter;
+import org.jboss.tools.forge.core.io.ForgeHiddenOutputFilter;
+import org.jboss.tools.forge.core.io.ForgeOutputListener;
+import org.jboss.tools.forge.core.process.ForgeRuntime;
+import org.jboss.tools.forge.ui.ForgeUIPlugin;
+
+public class ForgeTextViewer extends TextViewer {
+
+ private static String BACKSPACE = new Character('\b').toString();
+ private static String UP_ARROW = new Character((char)16).toString();
+ private static String DOWN_ARROW = new Character((char)14).toString();
+
+ private class RuntimeStopListener implements PropertyChangeListener {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (ForgeRuntime.PROPERTY_STATE.equals(evt.getPropertyName()) &&
+ ForgeRuntime.STATE_NOT_RUNNING.equals(evt.getNewValue())) {
+ handleRuntimeStopped();
+ }
+ }
+ }
+
+ private class ConsoleKeyListener implements KeyListener {
+ @Override
+ public void keyPressed(KeyEvent e) {
+ }
+ @Override
+ public void keyReleased(KeyEvent e) {
+ if (e.keyCode == SWT.BS) {
+ handleBackspace();
+ } else if (e.keyCode == SWT.ARROW_UP) {
+ handleArrowUp();
+ } else if (e.keyCode == SWT.ARROW_DOWN) {
+ handleArrowDown();
+ } else if (e.keyCode == SWT.F1) {
+ handleF1Down();
+ }
+ }
+ }
+
+ private class DocumentListener implements IDocumentListener {
+ @Override
+ public void documentAboutToBeChanged(DocumentEvent event) {
+ }
+ @Override
+ public void documentChanged(DocumentEvent event) {
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ StyledText textWidget = getTextWidget();
+ if (textWidget != null && !textWidget.isDisposed()) {
+ int lineCount = textWidget.getLineCount();
+ textWidget.setTopIndex(lineCount - 1);
+ textWidget.setCaretOffset(textWidget.getCharCount());
+ }
+ }
+ });
+ }
+ }
+
+ private RuntimeStopListener stopListener;
+ private ForgeOutputListener outputListener;
+ private ForgeRuntime runtime;
+ private ForgeDocument document;
+
+ public ForgeTextViewer(Composite parent, ForgeRuntime runtime) {
+ super(parent, SWT.WRAP | SWT.V_SCROLL | SWT.H_SCROLL);
+ this.runtime = runtime;
+ initialize();
+ }
+
+ private void initialize() {
+ initDocument();
+ initViewer();
+ initCommandRecorder();
+ initOutputListener();
+ initStopListener();
+ }
+
+ private void initDocument() {
+ document = new ForgeDocument();
+ document.addDocumentListener(new DocumentListener());
+ setDocument(document);
+ }
+
+ private void initViewer() {
+ StyledText textWidget = getTextWidget();
+ textWidget.setFont(JFaceResources.getFont(JFaceResources.TEXT_FONT));
+ textWidget.addKeyListener(new ConsoleKeyListener());
+ }
+
+ private void initCommandRecorder() {
+ getDocument().addDocumentListener(new CommandRecorder());
+ }
+
+ private void initOutputListener() {
+ ForgeOutputListener target = new ForgeOutputListener() {
+ @Override
+ public void outputAvailable(String output) {
+ document.appendString(output);
+ }
+ };
+ ForgeAnsiCommandFilter ansiCommandFilter = new ForgeAnsiCommandFilter(target) {
+ @Override
+ public void ansiCommandAvailable(String command) {
+ executeAnsiCommand(command);
+ }
+ };
+ outputListener = new ForgeHiddenOutputFilter(ansiCommandFilter) {
+ @Override
+ public void handleFilteredString(String str) {
+ System.out.println("handleHiddenOutput : " + str);
+ }
+ };
+ runtime.addOutputListener(outputListener);
+ }
+
+ private void initStopListener() {
+ stopListener = new RuntimeStopListener();
+ runtime.addPropertyChangeListener(stopListener);
+ }
+
+ private void handleRuntimeStopped() {
+ runtime.removePropertyChangeListener(stopListener);
+ stopListener = null;
+ runtime.removeOutputListener(outputListener);
+ outputListener = null;
+ }
+
+ protected void handleVerifyEvent(VerifyEvent e) {
+ runtime.sendInput(e.text);
+ e.doit = false;
+ }
+
+ private void handleBackspace() {
+ runtime.sendInput(BACKSPACE);
+ }
+
+ private void handleArrowUp() {
+ runtime.sendInput(UP_ARROW);
+ }
+
+ private void handleArrowDown() {
+ runtime.sendInput(DOWN_ARROW);
+ }
+
+ private void handleF1Down() {
+ runtime.sendInput(new Character((char)31).toString() + "hidden command!\n");
+ }
+
+ private void executeAnsiCommand(final String command) {
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ char c = command.charAt(command.length() - 1);
+ switch (c) {
+ case 'G' : moveCursorAbsolute(command); break;
+ case 'K' : clearCurrentLine(command); break;
+ }
+ }
+ });
+ }
+
+ private void moveCursorAbsolute(final String command) {
+ try {
+ int column = Integer.valueOf(command.substring(2, command.length() - 1));
+ int lineStart = document.getLineOffset(document.getLineOfOffset(getTextWidget().getCaretOffset()));
+ getTextWidget().setCaretOffset(lineStart + column - 1);
+ } catch (BadLocationException e) {
+ ForgeUIPlugin.log(e);
+ }
+ }
+
+ private void clearCurrentLine(String command) {
+ try {
+ int caretOffset = getTextWidget().getCaretOffset();
+ document.replace(caretOffset, document.getLength() - caretOffset, "");
+ } catch (BadLocationException e) {
+ ForgeUIPlugin.log(e);
+ }
+ }
+
+}
Deleted: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/part/ConsoleView.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/part/ConsoleView.java 2011-09-19 07:56:48 UTC (rev 34844)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/part/ConsoleView.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -1,207 +0,0 @@
-package org.jboss.tools.forge.ui.part;
-
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.part.MessagePage;
-import org.eclipse.ui.part.PageBook;
-import org.eclipse.ui.part.PageSite;
-import org.eclipse.ui.part.ViewPart;
-import org.jboss.tools.forge.core.preferences.ForgeRuntimesPreferences;
-import org.jboss.tools.forge.core.process.ForgeRuntime;
-import org.jboss.tools.forge.ui.ForgeUIPlugin;
-import org.jboss.tools.forge.ui.console.ConsolePage;
-
-public class ConsoleView extends ViewPart implements PropertyChangeListener {
-
- public static final String ID = "org.jboss.tools.forge.console";
-
- private static final String NOT_RUNNING_MESSAGE = "Forge is not running.";
- private static final String STARTING_MESSAGE = "Please wait while Forge is starting";
-
- public static ConsoleView INSTANCE;
-
- private PageBook pageBook = null;
- private Control notRunning;
- private Control running;
- private ConsolePage runningPage;
- private MessagePage notRunningPage;
- private String notRunningMessage;
-
- private ForgeRuntime runtime;
-
- public ConsoleView() {
- if (INSTANCE == null) {
- INSTANCE = this;
- }
- }
-
- @Override
- public void createPartControl(Composite parent) {
- pageBook = new PageBook(parent, SWT.NONE);
- createNotRunningPage(parent);
- showPage(notRunning);
- }
-
- private void createNotRunningPage(Composite parent) {
- MessagePage page = new MessagePage();
- page.createControl(pageBook);
- page.init(new PageSite(getViewSite()));
- notRunningMessage = NOT_RUNNING_MESSAGE;
- page.setMessage(notRunningMessage);
- notRunning = page.getControl();
- notRunningPage = page;
- }
-
- @Override
- public void setFocus() {
- if (runtime != null && ForgeRuntime.STATE_RUNNING.equals(runtime.getState())) {
- runningPage.setFocus();
- }
- }
-
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if (ForgeRuntime.PROPERTY_STATE.equals(evt.getPropertyName())) {
- if (ForgeRuntime.STATE_STARTING.equals(evt.getNewValue())) {
- handleStateStarting();
- } else if (ForgeRuntime.STATE_RUNNING.equals(evt.getNewValue())) {
- handleStateRunning();
- } else if (ForgeRuntime.STATE_NOT_RUNNING.equals(evt.getNewValue())) {
- handleStateNotRunning();
- }
- }
- }
-
- private void handleStateStarting() {
- getDisplay().asyncExec(new Runnable() {
- @Override
- public void run() {
- notRunningMessage = STARTING_MESSAGE;
- notRunningPage.setMessage(notRunningMessage);
- createRunningPage();
- }
- });
- }
-
- private void handleStateRunning() {
- showPage(running);
- }
-
- private void handleStateNotRunning() {
- if (runtime != null) {
- runtime.removePropertyChangeListener(INSTANCE);
- runtime = null;
- }
- getDisplay().asyncExec(new Runnable() {
- @Override
- public void run() {
- notRunningMessage = NOT_RUNNING_MESSAGE;
- if (!notRunningPage.getControl().isDisposed()) {
- notRunningPage.setMessage(notRunningMessage);
- }
- showPage(notRunning);
- }
- });
- }
-
- private void showPage(final Control control) {
- if (getSite().getShell() != null) {
- getDisplay().asyncExec(new Runnable() {
- @Override
- public void run() {
- pageBook.showPage(control);
- }
- });
- }
- }
-
- private void createRunningPage() {
- Control oldForgeIsRunning = running;
- ConsolePage oldForgeIsRunningPage = runningPage;
- runningPage = new ConsolePage(runtime);
- runningPage.createControl(pageBook);
- runningPage.init(new PageSite(getViewSite()));
- running = runningPage.getControl();
- if (oldForgeIsRunningPage != null) {
-// Console oldConsole = oldForgeIsRunningPage.getConsole();
-// if (oldConsole != null) {
-// DebugPlugin.getDefault().removeDebugEventListener(oldConsole);
-// oldConsole.dispose();
-// }
- oldForgeIsRunningPage.dispose();
- }
- if (oldForgeIsRunning != null) {
- oldForgeIsRunning.dispose();
- }
- }
-
- public void dispose() {
- if (runtime != null) {
- runtime.stop(null);
- runtime = null;
- }
- super.dispose();
- }
-
- public void startForge() {
- if (runtime != null) return;
- runtime = ForgeRuntimesPreferences.INSTANCE.getDefault();
- runtime.addPropertyChangeListener(INSTANCE);
- Job job = new Job("Starting Forge") {
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- runtime.start(monitor);
- return Status.OK_STATUS;
- }
- };
- job.schedule();
- Thread waitThread = new Thread(new Runnable() {
- @Override
- public void run() {
- while (!ForgeRuntime.STATE_RUNNING.equals(runtime.getState())) {
- try {
- Thread.sleep(1000);
- updateNonRunningPage();
- } catch (InterruptedException e) {
- ForgeUIPlugin.log(e);
- }
- }
- }
- });
- waitThread.start();
- }
-
- private void updateNonRunningPage() {
- getDisplay().asyncExec(new Runnable() {
- @Override
- public void run() {
- notRunningMessage += '.';
- notRunningPage.setMessage(notRunningMessage);
- }
- });
- }
-
- public void stopForge() {
- if (runtime == null) return;
- final IProgressMonitor progressMonitor = getViewSite().getActionBars().getStatusLineManager().getProgressMonitor();
- runtime.stop(progressMonitor);
- }
-
- private Display getDisplay() {
- return getSite().getShell().getDisplay();
- }
-
- public ForgeRuntime getRuntime() {
- return runtime;
- }
-
-}
Copied: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/part/ForgeView.java (from rev 34844, trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeView.java)
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/part/ForgeView.java (rev 0)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/part/ForgeView.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -0,0 +1,229 @@
+package org.jboss.tools.forge.ui.part;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.part.MessagePage;
+import org.eclipse.ui.part.Page;
+import org.eclipse.ui.part.PageBook;
+import org.eclipse.ui.part.PageSite;
+import org.eclipse.ui.part.ViewPart;
+import org.jboss.tools.forge.core.preferences.ForgeRuntimesPreferences;
+import org.jboss.tools.forge.core.process.ForgeRuntime;
+import org.jboss.tools.forge.ui.ForgeUIPlugin;
+import org.jboss.tools.forge.ui.console.ForgeTextViewer;
+
+public class ForgeView extends ViewPart implements PropertyChangeListener {
+
+ public static final String ID = "org.jboss.tools.forge.console";
+
+ private static final String NOT_RUNNING_MESSAGE = "Forge is not running.";
+ private static final String STARTING_MESSAGE = "Please wait while Forge is starting";
+
+ public static ForgeView INSTANCE;
+
+ private class ForgePage extends Page {
+
+ private ForgeTextViewer viewer;
+ private ForgeRuntime runtime;
+
+ public ForgePage(ForgeRuntime runtime) {
+ this.runtime = runtime;
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ viewer = new ForgeTextViewer(parent, runtime);
+ }
+
+ @Override
+ public Control getControl() {
+ return viewer == null ? null : viewer.getControl();
+ }
+
+ @Override
+ public void setFocus() {
+ viewer.getControl().setFocus();
+ }
+
+ }
+
+ private PageBook pageBook = null;
+ private Control notRunning;
+ private Control running;
+ private Page runningPage;
+ private MessagePage notRunningPage;
+ private String notRunningMessage;
+
+ private ForgeRuntime runtime;
+
+ public ForgeView() {
+ if (INSTANCE == null) {
+ INSTANCE = this;
+ }
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ pageBook = new PageBook(parent, SWT.NONE);
+ createNotRunningPage(parent);
+ showPage(notRunning);
+ }
+
+ private void createNotRunningPage(Composite parent) {
+ MessagePage page = new MessagePage();
+ page.createControl(pageBook);
+ page.init(new PageSite(getViewSite()));
+ notRunningMessage = NOT_RUNNING_MESSAGE;
+ page.setMessage(notRunningMessage);
+ notRunning = page.getControl();
+ notRunningPage = page;
+ }
+
+ @Override
+ public void setFocus() {
+ if (runtime != null && ForgeRuntime.STATE_RUNNING.equals(runtime.getState())) {
+ runningPage.setFocus();
+ }
+ }
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (ForgeRuntime.PROPERTY_STATE.equals(evt.getPropertyName())) {
+ if (ForgeRuntime.STATE_STARTING.equals(evt.getNewValue())) {
+ handleStateStarting();
+ } else if (ForgeRuntime.STATE_RUNNING.equals(evt.getNewValue())) {
+ handleStateRunning();
+ } else if (ForgeRuntime.STATE_NOT_RUNNING.equals(evt.getNewValue())) {
+ handleStateNotRunning();
+ }
+ }
+ }
+
+ private void handleStateStarting() {
+ getDisplay().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ notRunningMessage = STARTING_MESSAGE;
+ notRunningPage.setMessage(notRunningMessage);
+ createRunningPage();
+ }
+ });
+ }
+
+ private void handleStateRunning() {
+ showPage(running);
+ }
+
+ private void handleStateNotRunning() {
+ if (runtime != null) {
+ runtime.removePropertyChangeListener(INSTANCE);
+ runtime = null;
+ }
+ getDisplay().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ notRunningMessage = NOT_RUNNING_MESSAGE;
+ if (!notRunningPage.getControl().isDisposed()) {
+ notRunningPage.setMessage(notRunningMessage);
+ }
+ showPage(notRunning);
+ }
+ });
+ }
+
+ private void showPage(final Control control) {
+ if (getSite().getShell() != null) {
+ getDisplay().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ pageBook.showPage(control);
+ }
+ });
+ }
+ }
+
+ private void createRunningPage() {
+ Control oldForgeIsRunning = running;
+ Page oldForgeIsRunningPage = runningPage;
+ runningPage = new ForgePage(runtime);
+ runningPage.createControl(pageBook);
+ runningPage.init(new PageSite(getViewSite()));
+ running = runningPage.getControl();
+ if (oldForgeIsRunningPage != null) {
+ oldForgeIsRunningPage.dispose();
+ }
+ if (oldForgeIsRunning != null) {
+ oldForgeIsRunning.dispose();
+ }
+ }
+
+ public void dispose() {
+ if (runtime != null) {
+ runtime.stop(null);
+ runtime = null;
+ }
+ super.dispose();
+ }
+
+ public void startForge() {
+ if (runtime != null) return;
+ runtime = ForgeRuntimesPreferences.INSTANCE.getDefault();
+ runtime.addPropertyChangeListener(INSTANCE);
+ Job job = new Job("Starting Forge") {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ runtime.start(monitor);
+ return Status.OK_STATUS;
+ }
+ };
+ job.schedule();
+ Thread waitThread = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ while (!ForgeRuntime.STATE_RUNNING.equals(runtime.getState())) {
+ try {
+ Thread.sleep(1000);
+ updateNonRunningPage();
+ } catch (InterruptedException e) {
+ ForgeUIPlugin.log(e);
+ }
+ }
+ }
+ });
+ waitThread.start();
+ }
+
+ private void updateNonRunningPage() {
+ getDisplay().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ notRunningMessage += '.';
+ notRunningPage.setMessage(notRunningMessage);
+ }
+ });
+ }
+
+ public void stopForge() {
+ if (runtime == null) return;
+ final IProgressMonitor progressMonitor = getViewSite().getActionBars().getStatusLineManager().getProgressMonitor();
+ runtime.stop(progressMonitor);
+ }
+
+ private Display getDisplay() {
+ return getSite().getShell().getDisplay();
+ }
+
+ public ForgeRuntime getRuntime() {
+ return runtime;
+ }
+
+}
Deleted: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeDocument.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeDocument.java 2011-09-19 07:56:48 UTC (rev 34844)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeDocument.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -1,28 +0,0 @@
-package org.jboss.tools.forge.ui.trials;
-
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.Document;
-import org.eclipse.swt.widgets.Display;
-
-public class ForgeDocument extends Document {
-
- public void appendString(final String str) {
- Display.getDefault().asyncExec(new Runnable() {
- @Override
- public void run() {
- try {
- for (int i = 0; i < str.length(); i++) {
- char c = str.charAt(i);
- if (c == '\r') continue; //ignore
- if (str.charAt(i) == '\b') {
- replace(getLength() - 1, 1, "");
- } else {
- replace(getLength(), 0, str.substring(i, i + 1));
- }
- }
- } catch (BadLocationException e) {}
- }
- });
- }
-
-}
Deleted: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeTextViewer.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeTextViewer.java 2011-09-19 07:56:48 UTC (rev 34844)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeTextViewer.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -1,201 +0,0 @@
-package org.jboss.tools.forge.ui.trials;
-
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocumentListener;
-import org.eclipse.jface.text.TextViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.VerifyEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.jboss.tools.forge.core.io.ForgeAnsiCommandFilter;
-import org.jboss.tools.forge.core.io.ForgeHiddenOutputFilter;
-import org.jboss.tools.forge.core.io.ForgeOutputListener;
-import org.jboss.tools.forge.core.process.ForgeRuntime;
-import org.jboss.tools.forge.ui.ForgeUIPlugin;
-import org.jboss.tools.forge.ui.console.CommandRecorder;
-
-public class ForgeTextViewer extends TextViewer {
-
- private static String BACKSPACE = new Character('\b').toString();
- private static String UP_ARROW = new Character((char)16).toString();
- private static String DOWN_ARROW = new Character((char)14).toString();
-
- private class RuntimeStopListener implements PropertyChangeListener {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if (ForgeRuntime.PROPERTY_STATE.equals(evt.getPropertyName()) &&
- ForgeRuntime.STATE_NOT_RUNNING.equals(evt.getNewValue())) {
- handleRuntimeStopped();
- }
- }
- }
-
- private class ConsoleKeyListener implements KeyListener {
- @Override
- public void keyPressed(KeyEvent e) {
- }
- @Override
- public void keyReleased(KeyEvent e) {
- if (e.keyCode == SWT.BS) {
- handleBackspace();
- } else if (e.keyCode == SWT.ARROW_UP) {
- handleArrowUp();
- } else if (e.keyCode == SWT.ARROW_DOWN) {
- handleArrowDown();
- } else if (e.keyCode == SWT.F1) {
- handleF1Down();
- }
- }
- }
-
- private class DocumentListener implements IDocumentListener {
- @Override
- public void documentAboutToBeChanged(DocumentEvent event) {
- }
- @Override
- public void documentChanged(DocumentEvent event) {
- Display.getDefault().asyncExec(new Runnable() {
- @Override
- public void run() {
- StyledText textWidget = getTextWidget();
- if (textWidget != null && !textWidget.isDisposed()) {
- int lineCount = textWidget.getLineCount();
- textWidget.setTopIndex(lineCount - 1);
- textWidget.setCaretOffset(textWidget.getCharCount());
- }
- }
- });
- }
- }
-
- private RuntimeStopListener stopListener;
- private ForgeOutputListener outputListener;
- private ForgeRuntime runtime;
- private ForgeDocument document;
-
- public ForgeTextViewer(Composite parent, ForgeRuntime runtime) {
- super(parent, SWT.WRAP | SWT.V_SCROLL | SWT.H_SCROLL);
- this.runtime = runtime;
- initialize();
- }
-
- private void initialize() {
- initDocument();
- initViewer();
- initCommandRecorder();
- initOutputListener();
- initStopListener();
- }
-
- private void initDocument() {
- document = new ForgeDocument();
- document.addDocumentListener(new DocumentListener());
- setDocument(document);
- }
-
- private void initViewer() {
- StyledText textWidget = getTextWidget();
- textWidget.setFont(JFaceResources.getFont(JFaceResources.TEXT_FONT));
- textWidget.addKeyListener(new ConsoleKeyListener());
- }
-
- private void initCommandRecorder() {
- getDocument().addDocumentListener(new CommandRecorder());
- }
-
- private void initOutputListener() {
- ForgeOutputListener target = new ForgeOutputListener() {
- @Override
- public void outputAvailable(String output) {
- document.appendString(output);
- }
- };
- ForgeAnsiCommandFilter ansiCommandFilter = new ForgeAnsiCommandFilter(target) {
- @Override
- public void ansiCommandAvailable(String command) {
- executeAnsiCommand(command);
- }
- };
- outputListener = new ForgeHiddenOutputFilter(ansiCommandFilter) {
- @Override
- public void handleFilteredString(String str) {
- System.out.println("handleHiddenOutput : " + str);
- }
- };
- runtime.addOutputListener(outputListener);
- }
-
- private void initStopListener() {
- stopListener = new RuntimeStopListener();
- runtime.addPropertyChangeListener(stopListener);
- }
-
- private void handleRuntimeStopped() {
- runtime.removePropertyChangeListener(stopListener);
- stopListener = null;
- runtime.removeOutputListener(outputListener);
- outputListener = null;
- }
-
- protected void handleVerifyEvent(VerifyEvent e) {
- runtime.sendInput(e.text);
- e.doit = false;
- }
-
- private void handleBackspace() {
- runtime.sendInput(BACKSPACE);
- }
-
- private void handleArrowUp() {
- runtime.sendInput(UP_ARROW);
- }
-
- private void handleArrowDown() {
- runtime.sendInput(DOWN_ARROW);
- }
-
- private void handleF1Down() {
- runtime.sendInput(new Character((char)31).toString() + "hidden command!\n");
- }
-
- private void executeAnsiCommand(final String command) {
- Display.getDefault().asyncExec(new Runnable() {
- @Override
- public void run() {
- char c = command.charAt(command.length() - 1);
- switch (c) {
- case 'G' : moveCursorAbsolute(command); break;
- case 'K' : clearCurrentLine(command); break;
- }
- }
- });
- }
-
- private void moveCursorAbsolute(final String command) {
- try {
- int column = Integer.valueOf(command.substring(2, command.length() - 1));
- int lineStart = document.getLineOffset(document.getLineOfOffset(getTextWidget().getCaretOffset()));
- getTextWidget().setCaretOffset(lineStart + column - 1);
- } catch (BadLocationException e) {
- ForgeUIPlugin.log(e);
- }
- }
-
- private void clearCurrentLine(String command) {
- try {
- int caretOffset = getTextWidget().getCaretOffset();
- document.replace(caretOffset, document.getLength() - caretOffset, "");
- } catch (BadLocationException e) {
- ForgeUIPlugin.log(e);
- }
- }
-
-}
Deleted: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeView.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeView.java 2011-09-19 07:56:48 UTC (rev 34844)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeView.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -1,228 +0,0 @@
-package org.jboss.tools.forge.ui.trials;
-
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.part.MessagePage;
-import org.eclipse.ui.part.Page;
-import org.eclipse.ui.part.PageBook;
-import org.eclipse.ui.part.PageSite;
-import org.eclipse.ui.part.ViewPart;
-import org.jboss.tools.forge.core.preferences.ForgeRuntimesPreferences;
-import org.jboss.tools.forge.core.process.ForgeRuntime;
-import org.jboss.tools.forge.ui.ForgeUIPlugin;
-
-public class ForgeView extends ViewPart implements PropertyChangeListener {
-
- public static final String ID = "org.jboss.tools.forge.console";
-
- private static final String NOT_RUNNING_MESSAGE = "Forge is not running.";
- private static final String STARTING_MESSAGE = "Please wait while Forge is starting";
-
- public static ForgeView INSTANCE;
-
- private class ForgePage extends Page {
-
- private ForgeTextViewer viewer;
- private ForgeRuntime runtime;
-
- public ForgePage(ForgeRuntime runtime) {
- this.runtime = runtime;
- }
-
- @Override
- public void createControl(Composite parent) {
- viewer = new ForgeTextViewer(parent, runtime);
- }
-
- @Override
- public Control getControl() {
- return viewer == null ? null : viewer.getControl();
- }
-
- @Override
- public void setFocus() {
- viewer.getControl().setFocus();
- }
-
- }
-
- private PageBook pageBook = null;
- private Control notRunning;
- private Control running;
- private Page runningPage;
- private MessagePage notRunningPage;
- private String notRunningMessage;
-
- private ForgeRuntime runtime;
-
- public ForgeView() {
- if (INSTANCE == null) {
- INSTANCE = this;
- }
- }
-
- @Override
- public void createPartControl(Composite parent) {
- pageBook = new PageBook(parent, SWT.NONE);
- createNotRunningPage(parent);
- showPage(notRunning);
- }
-
- private void createNotRunningPage(Composite parent) {
- MessagePage page = new MessagePage();
- page.createControl(pageBook);
- page.init(new PageSite(getViewSite()));
- notRunningMessage = NOT_RUNNING_MESSAGE;
- page.setMessage(notRunningMessage);
- notRunning = page.getControl();
- notRunningPage = page;
- }
-
- @Override
- public void setFocus() {
- if (runtime != null && ForgeRuntime.STATE_RUNNING.equals(runtime.getState())) {
- runningPage.setFocus();
- }
- }
-
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if (ForgeRuntime.PROPERTY_STATE.equals(evt.getPropertyName())) {
- if (ForgeRuntime.STATE_STARTING.equals(evt.getNewValue())) {
- handleStateStarting();
- } else if (ForgeRuntime.STATE_RUNNING.equals(evt.getNewValue())) {
- handleStateRunning();
- } else if (ForgeRuntime.STATE_NOT_RUNNING.equals(evt.getNewValue())) {
- handleStateNotRunning();
- }
- }
- }
-
- private void handleStateStarting() {
- getDisplay().asyncExec(new Runnable() {
- @Override
- public void run() {
- notRunningMessage = STARTING_MESSAGE;
- notRunningPage.setMessage(notRunningMessage);
- createRunningPage();
- }
- });
- }
-
- private void handleStateRunning() {
- showPage(running);
- }
-
- private void handleStateNotRunning() {
- if (runtime != null) {
- runtime.removePropertyChangeListener(INSTANCE);
- runtime = null;
- }
- getDisplay().asyncExec(new Runnable() {
- @Override
- public void run() {
- notRunningMessage = NOT_RUNNING_MESSAGE;
- if (!notRunningPage.getControl().isDisposed()) {
- notRunningPage.setMessage(notRunningMessage);
- }
- showPage(notRunning);
- }
- });
- }
-
- private void showPage(final Control control) {
- if (getSite().getShell() != null) {
- getDisplay().asyncExec(new Runnable() {
- @Override
- public void run() {
- pageBook.showPage(control);
- }
- });
- }
- }
-
- private void createRunningPage() {
- Control oldForgeIsRunning = running;
- Page oldForgeIsRunningPage = runningPage;
- runningPage = new ForgePage(runtime);
- runningPage.createControl(pageBook);
- runningPage.init(new PageSite(getViewSite()));
- running = runningPage.getControl();
- if (oldForgeIsRunningPage != null) {
- oldForgeIsRunningPage.dispose();
- }
- if (oldForgeIsRunning != null) {
- oldForgeIsRunning.dispose();
- }
- }
-
- public void dispose() {
- if (runtime != null) {
- runtime.stop(null);
- runtime = null;
- }
- super.dispose();
- }
-
- public void startForge() {
- if (runtime != null) return;
- runtime = ForgeRuntimesPreferences.INSTANCE.getDefault();
- runtime.addPropertyChangeListener(INSTANCE);
- Job job = new Job("Starting Forge") {
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- runtime.start(monitor);
- return Status.OK_STATUS;
- }
- };
- job.schedule();
- Thread waitThread = new Thread(new Runnable() {
- @Override
- public void run() {
- while (!ForgeRuntime.STATE_RUNNING.equals(runtime.getState())) {
- try {
- Thread.sleep(1000);
- updateNonRunningPage();
- } catch (InterruptedException e) {
- ForgeUIPlugin.log(e);
- }
- }
- }
- });
- waitThread.start();
- }
-
- private void updateNonRunningPage() {
- getDisplay().asyncExec(new Runnable() {
- @Override
- public void run() {
- notRunningMessage += '.';
- notRunningPage.setMessage(notRunningMessage);
- }
- });
- }
-
- public void stopForge() {
- if (runtime == null) return;
- final IProgressMonitor progressMonitor = getViewSite().getActionBars().getStatusLineManager().getProgressMonitor();
- runtime.stop(progressMonitor);
- }
-
- private Display getDisplay() {
- return getSite().getShell().getDisplay();
- }
-
- public ForgeRuntime getRuntime() {
- return runtime;
- }
-
-}
Deleted: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/StartDelegate.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/StartDelegate.java 2011-09-19 07:56:48 UTC (rev 34844)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/StartDelegate.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -1,27 +0,0 @@
-package org.jboss.tools.forge.ui.trials;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IViewActionDelegate;
-import org.eclipse.ui.IViewPart;
-
-public class StartDelegate implements IViewActionDelegate {
-
- @Override
- public void run(IAction action) {
- ForgeView.INSTANCE.startForge();
- }
-
- @Override
- public void selectionChanged(IAction action, ISelection selection) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void init(IViewPart view) {
- // TODO Auto-generated method stub
-
- }
-
-}
Deleted: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/StopDelegate.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/StopDelegate.java 2011-09-19 07:56:48 UTC (rev 34844)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/StopDelegate.java 2011-09-19 08:08:38 UTC (rev 34845)
@@ -1,27 +0,0 @@
-package org.jboss.tools.forge.ui.trials;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IViewActionDelegate;
-import org.eclipse.ui.IViewPart;
-
-public class StopDelegate implements IViewActionDelegate {
-
- @Override
- public void run(IAction action) {
- ForgeView.INSTANCE.stopForge();
- }
-
- @Override
- public void selectionChanged(IAction action, ISelection selection) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void init(IViewPart view) {
- // TODO Auto-generated method stub
-
- }
-
-}
14 years, 6 months
JBoss Tools SVN: r34844 - in trunk/forge/plugins: org.jboss.tools.forge.runtime.ext/src/org/jboss/tools/forge/runtime/ext and 4 other directories.
by jbosstools-commits@lists.jboss.org
Author: koen.aers(a)jboss.com
Date: 2011-09-19 03:56:48 -0400 (Mon, 19 Sep 2011)
New Revision: 34844
Added:
trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/io/ForgeAnsiCommandFilter.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeDocument.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeTextViewer.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeView.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/StartDelegate.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/StopDelegate.java
Modified:
trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/io/ForgeHiddenOutputFilter.java
trunk/forge/plugins/org.jboss.tools.forge.runtime.ext/src/org/jboss/tools/forge/runtime/ext/EventHandler.java
trunk/forge/plugins/org.jboss.tools.forge.runtime.ext/src/org/jboss/tools/forge/runtime/ext/MetaCommandTriggeredAction.java
trunk/forge/plugins/org.jboss.tools.forge.ui/plugin.xml
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/commands/ForgeCommandListHandler.java
Log:
JBIDE-9735:
- add ForgeAnsiCommandFilter
- change hidden output escape sequence : 27 + '%'
- implement new ForgeView, ForgeTextViewer, ForgeDocument
Added: trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/io/ForgeAnsiCommandFilter.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/io/ForgeAnsiCommandFilter.java (rev 0)
+++ trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/io/ForgeAnsiCommandFilter.java 2011-09-19 07:56:48 UTC (rev 34844)
@@ -0,0 +1,55 @@
+package org.jboss.tools.forge.core.io;
+
+
+public abstract class ForgeAnsiCommandFilter implements ForgeOutputListener {
+
+ private ForgeOutputListener target = null;
+ private StringBuffer escapeSequence = new StringBuffer();
+ private StringBuffer targetBuffer = new StringBuffer();
+
+ public ForgeAnsiCommandFilter(ForgeOutputListener target) {
+ this.target = target;
+ }
+
+ public abstract void ansiCommandAvailable(String command);
+
+ @Override
+ public void outputAvailable(String output) {
+ for (int i = 0; i < output.length(); i++) {
+ char c = output.charAt(i);
+ if (c == 27) {
+ if (escapeSequence.length() == 0) {
+ if (targetBuffer.length() > 0) {
+ target.outputAvailable(targetBuffer.toString());
+ targetBuffer.setLength(0);
+ }
+ escapeSequence.append(c);
+ }
+ } else if (c == '[') {
+ if (escapeSequence.length() == 1) {
+ escapeSequence.append(c);
+ } else {
+ targetBuffer.append(c);
+ }
+ } else if (escapeSequence.length() > 1) {
+ escapeSequence.append(c);
+ if (isAnsiEnd(c)) {
+ ansiCommandAvailable(escapeSequence.toString());
+ escapeSequence.setLength(0);
+ }
+ } else {
+ targetBuffer.append(c);
+ }
+ }
+ if (targetBuffer.length() > 0) {
+ target.outputAvailable(targetBuffer.toString());
+ targetBuffer.setLength(0);
+ }
+ }
+
+ private boolean isAnsiEnd(char c) {
+ return c == 'G' ||
+ c == 'K';
+ }
+
+}
Modified: trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/io/ForgeHiddenOutputFilter.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/io/ForgeHiddenOutputFilter.java 2011-09-17 00:21:31 UTC (rev 34843)
+++ trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/io/ForgeHiddenOutputFilter.java 2011-09-19 07:56:48 UTC (rev 34844)
@@ -30,21 +30,9 @@
}
escapeSequence.setLength(0);
}
- } else if (c == '[') {
+ } else if (c == '%') {
if (escapeSequence.length() == 1) {
- escapeSequence.append(c);
- } else {
- escapeSequence.append(c);
if (hidden) {
- hiddenBuffer.append(escapeSequence);
- } else {
- targetBuffer.append(escapeSequence);
- }
- escapeSequence.setLength(0);
- }
- } else if (c == '%') {
- if (escapeSequence.length() == 2) {
- if (hidden) {
handleFilteredString(hiddenBuffer.toString());
hiddenBuffer.setLength(0);
} else {
Modified: trunk/forge/plugins/org.jboss.tools.forge.runtime.ext/src/org/jboss/tools/forge/runtime/ext/EventHandler.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.runtime.ext/src/org/jboss/tools/forge/runtime/ext/EventHandler.java 2011-09-17 00:21:31 UTC (rev 34843)
+++ trunk/forge/plugins/org.jboss.tools.forge.runtime.ext/src/org/jboss/tools/forge/runtime/ext/EventHandler.java 2011-09-19 07:56:48 UTC (rev 34844)
@@ -8,7 +8,7 @@
public class EventHandler {
- private static final String ESCAPE = new String(new char[] { 27, '[', '%'} );
+ private static final String ESCAPE = new String(new char[] { 27, '%'} );
@Inject
private Shell shell;
Modified: trunk/forge/plugins/org.jboss.tools.forge.runtime.ext/src/org/jboss/tools/forge/runtime/ext/MetaCommandTriggeredAction.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.runtime.ext/src/org/jboss/tools/forge/runtime/ext/MetaCommandTriggeredAction.java 2011-09-17 00:21:31 UTC (rev 34843)
+++ trunk/forge/plugins/org.jboss.tools.forge.runtime.ext/src/org/jboss/tools/forge/runtime/ext/MetaCommandTriggeredAction.java 2011-09-19 07:56:48 UTC (rev 34844)
@@ -2,6 +2,8 @@
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.io.BufferedWriter;
+import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import java.util.Map;
@@ -17,11 +19,13 @@
public class MetaCommandTriggeredAction implements TriggeredAction {
- private static final String ESCAPE = new String(new char[] { 27, '[', '%' });
+ private static final String ESCAPE = new String(new char[] { 27, '%' });
@Inject Shell shell;
@Inject PluginRegistry registry;
+
+
@Override
public ActionListener getListener() {
@@ -41,28 +45,58 @@
}
private void handleHiddenCommand(String text) {
- if ("plugin-candidates-query".equals(text)) {
- shell.print(ESCAPE + "plugin-candidates-answer: " + getPluginCandidates() + ESCAPE);
+ try {
+ FileWriter fileWriter = new FileWriter("/Users/koen/Temp/handleHiddenCommand.txt", true);
+ BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
+ bufferedWriter.write("handleHiddenCommand(" + text + ")\n");
+ if ("plugin-candidates-query".equals(text)) {
+ bufferedWriter.write("query is plugin-candidates-query\n");
+ shell.print(ESCAPE + "plugin-candidates-answer: " + getPluginCandidates() + ESCAPE);
+ bufferedWriter.write("response sent back to tools\n");
+ }
+ bufferedWriter.write("about to exit handleHiddenCommand\n");
+ bufferedWriter.flush();
+// fileWriter.close();
+ } catch (Exception e) {
+ // ignored
}
}
private String getPluginCandidates() {
- StringBuffer resultBuffer = new StringBuffer();
- Map<String, List<PluginMetadata>> plugins = registry.getPlugins();
- for (Entry<String, List<PluginMetadata>> entry : plugins.entrySet()) {
- for (PluginMetadata pluginMeta : entry.getValue()) {
- if (pluginMeta.constrantsSatisfied(shell)) {
- List<CommandMetadata> commands = pluginMeta.getAllCommands();
- if (!commands.isEmpty()) {
- resultBuffer.append("p:").append(pluginMeta.getName()).append(' ');
- for (CommandMetadata commandMeta : commands) {
- resultBuffer.append("c:").append(commandMeta.getName()).append(' ');
+ try {
+ FileWriter fileWriter = new FileWriter("/Users/koen/Temp/getPluginCandidates.txt", true);
+ BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
+ bufferedWriter.write("getPluginCandidates()\n");
+ StringBuffer resultBuffer = new StringBuffer();
+ Map<String, List<PluginMetadata>> plugins = registry.getPlugins();
+ bufferedWriter.write("got the plugins\n");
+ for (Entry<String, List<PluginMetadata>> entry : plugins.entrySet()) {
+ bufferedWriter.write("processing entry : " + entry.getKey() + "\n");
+ for (PluginMetadata pluginMeta : entry.getValue()) {
+ bufferedWriter.write("processing pluginMeta : " + pluginMeta.getName());
+ if (pluginMeta.constrantsSatisfied(shell)) {
+ bufferedWriter.write("pluginMeta : " + pluginMeta.getName() + " satisfies constraints\n");
+ List<CommandMetadata> commands = pluginMeta.getAllCommands();
+ bufferedWriter.write("got the commands\n");
+ if (!commands.isEmpty()) {
+ bufferedWriter.write("commands is not empty\n");
+ resultBuffer.append("p:").append(pluginMeta.getName()).append(' ');
+ bufferedWriter.write("result becomes : " + resultBuffer.toString() + "\n");
+ for (CommandMetadata commandMeta : commands) {
+ bufferedWriter.write("processing command : " + commandMeta.getName() + "\n");
+ resultBuffer.append("c:").append(commandMeta.getName()).append(' ');
+ bufferedWriter.write("result becomes : " + resultBuffer.toString() + "\n");
+ }
}
}
}
}
+ bufferedWriter.write("about to return result : " + resultBuffer.toString() + "\n");
+ bufferedWriter.flush();
+ return resultBuffer.toString();
+ } catch (Exception e) {
+ return null;
}
- return resultBuffer.toString();
}
@Override
Modified: trunk/forge/plugins/org.jboss.tools.forge.ui/plugin.xml
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/plugin.xml 2011-09-17 00:21:31 UTC (rev 34843)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/plugin.xml 2011-09-19 07:56:48 UTC (rev 34844)
@@ -9,11 +9,18 @@
</category>
<view
category="org.jboss.tools.forge"
- class="org.jboss.tools.forge.ui.part.ConsoleView"
+ class="org.jboss.tools.forge.ui.trials.ForgeView"
id="org.jboss.tools.forge.console"
name="Forge Console"
restorable="true">
</view>
+<!-- <view
+ category="org.jboss.tools.forge"
+ class="org.jboss.tools.forge.ui.part.ConsoleView"
+ id="org.jboss.tools.forge.console"
+ name="Forge Console"
+ restorable="true">
+ </view> -->
</extension>
<extension
point="org.eclipse.ui.viewActions">
@@ -24,7 +31,7 @@
id="org.jboss.tools.forge.menubar"
label="Forge">
</menu>
- <action
+<!-- <action
class="org.jboss.tools.forge.ui.action.StopDelegate"
icon="icons/stop.gif"
id="org.jboss.tools.forge.stop"
@@ -41,7 +48,25 @@
menubarPath="org.jboss.tools.forge.menu"
style="push"
toolbarPath="org.jboss.tools.forge.toolbar">
+ </action> -->
+ <action
+ class="org.jboss.tools.forge.ui.trials.StopDelegate"
+ icon="icons/stop.gif"
+ id="org.jboss.tools.forge.stop"
+ label="Stop Forge"
+ menubarPath="org.jboss.tools.forge.menubar"
+ style="push"
+ toolbarPath="org.jboss.tools.forge.toolbar">
</action>
+ <action
+ class="org.jboss.tools.forge.ui.trials.StartDelegate"
+ icon="icons/start.gif"
+ id="org.jboss.tools.forge.start"
+ label="Start Forge"
+ menubarPath="org.jboss.tools.forge.menu"
+ style="push"
+ toolbarPath="org.jboss.tools.forge.toolbar">
+ </action>
</viewContribution>
</extension>
<extension point="org.eclipse.ui.preferencePages">
Modified: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/commands/ForgeCommandListHandler.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/commands/ForgeCommandListHandler.java 2011-09-17 00:21:31 UTC (rev 34843)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/commands/ForgeCommandListHandler.java 2011-09-19 07:56:48 UTC (rev 34844)
@@ -7,7 +7,7 @@
import org.eclipse.ui.handlers.HandlerUtil;
import org.jboss.tools.forge.core.process.ForgeRuntime;
import org.jboss.tools.forge.ui.dialog.ForgeCommandListDialog;
-import org.jboss.tools.forge.ui.part.ConsoleView;
+import org.jboss.tools.forge.ui.trials.ForgeView;
public class ForgeCommandListHandler extends AbstractHandler {
@@ -17,12 +17,12 @@
if (window == null) {
return null;
}
- IViewPart part = window.getActivePage().findView(ConsoleView.ID);
- if (part == null || !(part instanceof ConsoleView)) {
+ IViewPart part = window.getActivePage().findView(ForgeView.ID);
+ if (part == null || !(part instanceof ForgeView)) {
return null;
}
- ForgeRuntime runtime = ((ConsoleView)part).getRuntime();
+ ForgeRuntime runtime = ((ForgeView)part).getRuntime();
if (runtime == null || !(ForgeRuntime.STATE_RUNNING.equals(runtime.getState()))) {
return null;
}
Added: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeDocument.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeDocument.java (rev 0)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeDocument.java 2011-09-19 07:56:48 UTC (rev 34844)
@@ -0,0 +1,28 @@
+package org.jboss.tools.forge.ui.trials;
+
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.Document;
+import org.eclipse.swt.widgets.Display;
+
+public class ForgeDocument extends Document {
+
+ public void appendString(final String str) {
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ for (int i = 0; i < str.length(); i++) {
+ char c = str.charAt(i);
+ if (c == '\r') continue; //ignore
+ if (str.charAt(i) == '\b') {
+ replace(getLength() - 1, 1, "");
+ } else {
+ replace(getLength(), 0, str.substring(i, i + 1));
+ }
+ }
+ } catch (BadLocationException e) {}
+ }
+ });
+ }
+
+}
Added: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeTextViewer.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeTextViewer.java (rev 0)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeTextViewer.java 2011-09-19 07:56:48 UTC (rev 34844)
@@ -0,0 +1,201 @@
+package org.jboss.tools.forge.ui.trials;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.DocumentEvent;
+import org.eclipse.jface.text.IDocumentListener;
+import org.eclipse.jface.text.TextViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.VerifyEvent;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.jboss.tools.forge.core.io.ForgeAnsiCommandFilter;
+import org.jboss.tools.forge.core.io.ForgeHiddenOutputFilter;
+import org.jboss.tools.forge.core.io.ForgeOutputListener;
+import org.jboss.tools.forge.core.process.ForgeRuntime;
+import org.jboss.tools.forge.ui.ForgeUIPlugin;
+import org.jboss.tools.forge.ui.console.CommandRecorder;
+
+public class ForgeTextViewer extends TextViewer {
+
+ private static String BACKSPACE = new Character('\b').toString();
+ private static String UP_ARROW = new Character((char)16).toString();
+ private static String DOWN_ARROW = new Character((char)14).toString();
+
+ private class RuntimeStopListener implements PropertyChangeListener {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (ForgeRuntime.PROPERTY_STATE.equals(evt.getPropertyName()) &&
+ ForgeRuntime.STATE_NOT_RUNNING.equals(evt.getNewValue())) {
+ handleRuntimeStopped();
+ }
+ }
+ }
+
+ private class ConsoleKeyListener implements KeyListener {
+ @Override
+ public void keyPressed(KeyEvent e) {
+ }
+ @Override
+ public void keyReleased(KeyEvent e) {
+ if (e.keyCode == SWT.BS) {
+ handleBackspace();
+ } else if (e.keyCode == SWT.ARROW_UP) {
+ handleArrowUp();
+ } else if (e.keyCode == SWT.ARROW_DOWN) {
+ handleArrowDown();
+ } else if (e.keyCode == SWT.F1) {
+ handleF1Down();
+ }
+ }
+ }
+
+ private class DocumentListener implements IDocumentListener {
+ @Override
+ public void documentAboutToBeChanged(DocumentEvent event) {
+ }
+ @Override
+ public void documentChanged(DocumentEvent event) {
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ StyledText textWidget = getTextWidget();
+ if (textWidget != null && !textWidget.isDisposed()) {
+ int lineCount = textWidget.getLineCount();
+ textWidget.setTopIndex(lineCount - 1);
+ textWidget.setCaretOffset(textWidget.getCharCount());
+ }
+ }
+ });
+ }
+ }
+
+ private RuntimeStopListener stopListener;
+ private ForgeOutputListener outputListener;
+ private ForgeRuntime runtime;
+ private ForgeDocument document;
+
+ public ForgeTextViewer(Composite parent, ForgeRuntime runtime) {
+ super(parent, SWT.WRAP | SWT.V_SCROLL | SWT.H_SCROLL);
+ this.runtime = runtime;
+ initialize();
+ }
+
+ private void initialize() {
+ initDocument();
+ initViewer();
+ initCommandRecorder();
+ initOutputListener();
+ initStopListener();
+ }
+
+ private void initDocument() {
+ document = new ForgeDocument();
+ document.addDocumentListener(new DocumentListener());
+ setDocument(document);
+ }
+
+ private void initViewer() {
+ StyledText textWidget = getTextWidget();
+ textWidget.setFont(JFaceResources.getFont(JFaceResources.TEXT_FONT));
+ textWidget.addKeyListener(new ConsoleKeyListener());
+ }
+
+ private void initCommandRecorder() {
+ getDocument().addDocumentListener(new CommandRecorder());
+ }
+
+ private void initOutputListener() {
+ ForgeOutputListener target = new ForgeOutputListener() {
+ @Override
+ public void outputAvailable(String output) {
+ document.appendString(output);
+ }
+ };
+ ForgeAnsiCommandFilter ansiCommandFilter = new ForgeAnsiCommandFilter(target) {
+ @Override
+ public void ansiCommandAvailable(String command) {
+ executeAnsiCommand(command);
+ }
+ };
+ outputListener = new ForgeHiddenOutputFilter(ansiCommandFilter) {
+ @Override
+ public void handleFilteredString(String str) {
+ System.out.println("handleHiddenOutput : " + str);
+ }
+ };
+ runtime.addOutputListener(outputListener);
+ }
+
+ private void initStopListener() {
+ stopListener = new RuntimeStopListener();
+ runtime.addPropertyChangeListener(stopListener);
+ }
+
+ private void handleRuntimeStopped() {
+ runtime.removePropertyChangeListener(stopListener);
+ stopListener = null;
+ runtime.removeOutputListener(outputListener);
+ outputListener = null;
+ }
+
+ protected void handleVerifyEvent(VerifyEvent e) {
+ runtime.sendInput(e.text);
+ e.doit = false;
+ }
+
+ private void handleBackspace() {
+ runtime.sendInput(BACKSPACE);
+ }
+
+ private void handleArrowUp() {
+ runtime.sendInput(UP_ARROW);
+ }
+
+ private void handleArrowDown() {
+ runtime.sendInput(DOWN_ARROW);
+ }
+
+ private void handleF1Down() {
+ runtime.sendInput(new Character((char)31).toString() + "hidden command!\n");
+ }
+
+ private void executeAnsiCommand(final String command) {
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ char c = command.charAt(command.length() - 1);
+ switch (c) {
+ case 'G' : moveCursorAbsolute(command); break;
+ case 'K' : clearCurrentLine(command); break;
+ }
+ }
+ });
+ }
+
+ private void moveCursorAbsolute(final String command) {
+ try {
+ int column = Integer.valueOf(command.substring(2, command.length() - 1));
+ int lineStart = document.getLineOffset(document.getLineOfOffset(getTextWidget().getCaretOffset()));
+ getTextWidget().setCaretOffset(lineStart + column - 1);
+ } catch (BadLocationException e) {
+ ForgeUIPlugin.log(e);
+ }
+ }
+
+ private void clearCurrentLine(String command) {
+ try {
+ int caretOffset = getTextWidget().getCaretOffset();
+ document.replace(caretOffset, document.getLength() - caretOffset, "");
+ } catch (BadLocationException e) {
+ ForgeUIPlugin.log(e);
+ }
+ }
+
+}
Added: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeView.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeView.java (rev 0)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/ForgeView.java 2011-09-19 07:56:48 UTC (rev 34844)
@@ -0,0 +1,228 @@
+package org.jboss.tools.forge.ui.trials;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.part.MessagePage;
+import org.eclipse.ui.part.Page;
+import org.eclipse.ui.part.PageBook;
+import org.eclipse.ui.part.PageSite;
+import org.eclipse.ui.part.ViewPart;
+import org.jboss.tools.forge.core.preferences.ForgeRuntimesPreferences;
+import org.jboss.tools.forge.core.process.ForgeRuntime;
+import org.jboss.tools.forge.ui.ForgeUIPlugin;
+
+public class ForgeView extends ViewPart implements PropertyChangeListener {
+
+ public static final String ID = "org.jboss.tools.forge.console";
+
+ private static final String NOT_RUNNING_MESSAGE = "Forge is not running.";
+ private static final String STARTING_MESSAGE = "Please wait while Forge is starting";
+
+ public static ForgeView INSTANCE;
+
+ private class ForgePage extends Page {
+
+ private ForgeTextViewer viewer;
+ private ForgeRuntime runtime;
+
+ public ForgePage(ForgeRuntime runtime) {
+ this.runtime = runtime;
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ viewer = new ForgeTextViewer(parent, runtime);
+ }
+
+ @Override
+ public Control getControl() {
+ return viewer == null ? null : viewer.getControl();
+ }
+
+ @Override
+ public void setFocus() {
+ viewer.getControl().setFocus();
+ }
+
+ }
+
+ private PageBook pageBook = null;
+ private Control notRunning;
+ private Control running;
+ private Page runningPage;
+ private MessagePage notRunningPage;
+ private String notRunningMessage;
+
+ private ForgeRuntime runtime;
+
+ public ForgeView() {
+ if (INSTANCE == null) {
+ INSTANCE = this;
+ }
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ pageBook = new PageBook(parent, SWT.NONE);
+ createNotRunningPage(parent);
+ showPage(notRunning);
+ }
+
+ private void createNotRunningPage(Composite parent) {
+ MessagePage page = new MessagePage();
+ page.createControl(pageBook);
+ page.init(new PageSite(getViewSite()));
+ notRunningMessage = NOT_RUNNING_MESSAGE;
+ page.setMessage(notRunningMessage);
+ notRunning = page.getControl();
+ notRunningPage = page;
+ }
+
+ @Override
+ public void setFocus() {
+ if (runtime != null && ForgeRuntime.STATE_RUNNING.equals(runtime.getState())) {
+ runningPage.setFocus();
+ }
+ }
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (ForgeRuntime.PROPERTY_STATE.equals(evt.getPropertyName())) {
+ if (ForgeRuntime.STATE_STARTING.equals(evt.getNewValue())) {
+ handleStateStarting();
+ } else if (ForgeRuntime.STATE_RUNNING.equals(evt.getNewValue())) {
+ handleStateRunning();
+ } else if (ForgeRuntime.STATE_NOT_RUNNING.equals(evt.getNewValue())) {
+ handleStateNotRunning();
+ }
+ }
+ }
+
+ private void handleStateStarting() {
+ getDisplay().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ notRunningMessage = STARTING_MESSAGE;
+ notRunningPage.setMessage(notRunningMessage);
+ createRunningPage();
+ }
+ });
+ }
+
+ private void handleStateRunning() {
+ showPage(running);
+ }
+
+ private void handleStateNotRunning() {
+ if (runtime != null) {
+ runtime.removePropertyChangeListener(INSTANCE);
+ runtime = null;
+ }
+ getDisplay().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ notRunningMessage = NOT_RUNNING_MESSAGE;
+ if (!notRunningPage.getControl().isDisposed()) {
+ notRunningPage.setMessage(notRunningMessage);
+ }
+ showPage(notRunning);
+ }
+ });
+ }
+
+ private void showPage(final Control control) {
+ if (getSite().getShell() != null) {
+ getDisplay().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ pageBook.showPage(control);
+ }
+ });
+ }
+ }
+
+ private void createRunningPage() {
+ Control oldForgeIsRunning = running;
+ Page oldForgeIsRunningPage = runningPage;
+ runningPage = new ForgePage(runtime);
+ runningPage.createControl(pageBook);
+ runningPage.init(new PageSite(getViewSite()));
+ running = runningPage.getControl();
+ if (oldForgeIsRunningPage != null) {
+ oldForgeIsRunningPage.dispose();
+ }
+ if (oldForgeIsRunning != null) {
+ oldForgeIsRunning.dispose();
+ }
+ }
+
+ public void dispose() {
+ if (runtime != null) {
+ runtime.stop(null);
+ runtime = null;
+ }
+ super.dispose();
+ }
+
+ public void startForge() {
+ if (runtime != null) return;
+ runtime = ForgeRuntimesPreferences.INSTANCE.getDefault();
+ runtime.addPropertyChangeListener(INSTANCE);
+ Job job = new Job("Starting Forge") {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ runtime.start(monitor);
+ return Status.OK_STATUS;
+ }
+ };
+ job.schedule();
+ Thread waitThread = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ while (!ForgeRuntime.STATE_RUNNING.equals(runtime.getState())) {
+ try {
+ Thread.sleep(1000);
+ updateNonRunningPage();
+ } catch (InterruptedException e) {
+ ForgeUIPlugin.log(e);
+ }
+ }
+ }
+ });
+ waitThread.start();
+ }
+
+ private void updateNonRunningPage() {
+ getDisplay().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ notRunningMessage += '.';
+ notRunningPage.setMessage(notRunningMessage);
+ }
+ });
+ }
+
+ public void stopForge() {
+ if (runtime == null) return;
+ final IProgressMonitor progressMonitor = getViewSite().getActionBars().getStatusLineManager().getProgressMonitor();
+ runtime.stop(progressMonitor);
+ }
+
+ private Display getDisplay() {
+ return getSite().getShell().getDisplay();
+ }
+
+ public ForgeRuntime getRuntime() {
+ return runtime;
+ }
+
+}
Added: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/StartDelegate.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/StartDelegate.java (rev 0)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/StartDelegate.java 2011-09-19 07:56:48 UTC (rev 34844)
@@ -0,0 +1,27 @@
+package org.jboss.tools.forge.ui.trials;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+
+public class StartDelegate implements IViewActionDelegate {
+
+ @Override
+ public void run(IAction action) {
+ ForgeView.INSTANCE.startForge();
+ }
+
+ @Override
+ public void selectionChanged(IAction action, ISelection selection) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void init(IViewPart view) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
Added: trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/StopDelegate.java
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/StopDelegate.java (rev 0)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/trials/StopDelegate.java 2011-09-19 07:56:48 UTC (rev 34844)
@@ -0,0 +1,27 @@
+package org.jboss.tools.forge.ui.trials;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+
+public class StopDelegate implements IViewActionDelegate {
+
+ @Override
+ public void run(IAction action) {
+ ForgeView.INSTANCE.stopForge();
+ }
+
+ @Override
+ public void selectionChanged(IAction action, ISelection selection) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void init(IViewPart view) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
14 years, 6 months
JBoss Tools SVN: r34843 - trunk/cdi/tests/org.jboss.tools.cdi.seam.faces.core.test.
by jbosstools-commits@lists.jboss.org
Author: dgolovin
Date: 2011-09-16 20:21:31 -0400 (Fri, 16 Sep 2011)
New Revision: 34843
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.seam.faces.core.test/pom.xml
Log:
configured coverage for cdi.seam.faces.core.test plugin
Modified: trunk/cdi/tests/org.jboss.tools.cdi.seam.faces.core.test/pom.xml
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.seam.faces.core.test/pom.xml 2011-09-17 00:19:12 UTC (rev 34842)
+++ trunk/cdi/tests/org.jboss.tools.cdi.seam.faces.core.test/pom.xml 2011-09-17 00:21:31 UTC (rev 34843)
@@ -10,7 +10,12 @@
<artifactId>org.jboss.tools.cdi.seam.faces.core.test</artifactId>
<packaging>eclipse-test-plugin</packaging>
-
+
+ <properties>
+ <emma.filter>org.jboss.tools.cdi.seam.faces.core*</emma.filter>
+ <emma.instrument.bundles>org.jboss.tools.cdi.seam.faces.core</emma.instrument.bundles>
+ </properties>
+
<build>
<plugins>
<plugin>
14 years, 7 months
JBoss Tools SVN: r34842 - trunk/cdi/tests/org.jboss.tools.cdi.seam.core.test.
by jbosstools-commits@lists.jboss.org
Author: dgolovin
Date: 2011-09-16 20:19:12 -0400 (Fri, 16 Sep 2011)
New Revision: 34842
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.seam.core.test/pom.xml
Log:
configured code coverage for cdi.seam.core.test plugin
Modified: trunk/cdi/tests/org.jboss.tools.cdi.seam.core.test/pom.xml
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.seam.core.test/pom.xml 2011-09-17 00:18:03 UTC (rev 34841)
+++ trunk/cdi/tests/org.jboss.tools.cdi.seam.core.test/pom.xml 2011-09-17 00:19:12 UTC (rev 34842)
@@ -10,7 +10,12 @@
<artifactId>org.jboss.tools.cdi.seam.core.test</artifactId>
<packaging>eclipse-test-plugin</packaging>
-
+
+ <properties>
+ <emma.filter>org.jboss.tools.cdi.seam.core*</emma.filter>
+ <emma.instrument.bundles>org.jboss.tools.cdi.seam.core</emma.instrument.bundles>
+ </properties>
+
<build>
<plugins>
<plugin>
14 years, 7 months
JBoss Tools SVN: r34841 - trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition.
by jbosstools-commits@lists.jboss.org
Author: dgolovin
Date: 2011-09-16 20:18:03 -0400 (Fri, 16 Sep 2011)
New Revision: 34841
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java
Log:
code clean up; return Collection.emptySet() instead of cretaing new empty Set instance
Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java 2011-09-17 00:06:02 UTC (rev 34840)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java 2011-09-17 00:18:03 UTC (rev 34841)
@@ -10,6 +10,7 @@
******************************************************************************/
package org.jboss.tools.cdi.internal.core.impl.definition;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -92,11 +93,17 @@
}
public Set<IParametedType> getInheritedTypes() {
- return parametedType == null ? new HashSet<IParametedType>() : parametedType.getInheritedTypes();
+ if(parametedType == null) {
+ return Collections.emptySet();
+ }
+ return parametedType.getInheritedTypes();
}
public Set<IParametedType> getAllTypes() {
- return parametedType == null ? new HashSet<IParametedType>() : parametedType.getAllTypes();
+ if(parametedType == null) {
+ return Collections.emptySet();
+ }
+ return parametedType.getAllTypes();
}
/**
14 years, 7 months
JBoss Tools SVN: r34840 - trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck.
by jbosstools-commits@lists.jboss.org
Author: scabanovich
Date: 2011-09-16 20:06:02 -0400 (Fri, 16 Sep 2011)
New Revision: 34840
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/BuiltInBeanInjectionTest.java
Log:
JBIDE-9732
https://issues.jboss.org/browse/JBIDE-9732
Test added.
Modified: trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/BuiltInBeanInjectionTest.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/BuiltInBeanInjectionTest.java 2011-09-16 23:41:01 UTC (rev 34839)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/BuiltInBeanInjectionTest.java 2011-09-17 00:06:02 UTC (rev 34840)
@@ -159,4 +159,22 @@
assertTrue(b instanceof IBuiltInBean);
}
+ /**
+ * Test built-in bean with type javax.enterprise.inject.spi.InjectionPoint
+ * 5.5.7 Injection point metadata
+ */
+ public void testBuiltInInjectionPointBean() {
+ IInjectionPointField field = getInjectionPointField("JavaSource/org/jboss/jsr299/tck/tests/lookup/injectionpoint/BeanWithInjectionPointMetadata.java", "injectedMetadata");
+ assertNotNull(field);
+
+ Set<IBean> beans = field.getCDIProject().getBeans(false, field);
+ assertFalse(beans.isEmpty());
+
+ IBean b = beans.iterator().next();
+ assertTrue(b instanceof IClassBean);
+ assertTrue(b instanceof IBuiltInBean);
+ IType t = b.getBeanClass();
+ assertEquals(CDIConstants.INJECTIONPOINT_TYPE_NAME, t.getFullyQualifiedName());
+ }
+
}
\ No newline at end of file
14 years, 7 months
JBoss Tools SVN: r34839 - trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl.
by jbosstools-commits@lists.jboss.org
Author: scabanovich
Date: 2011-09-16 19:41:01 -0400 (Fri, 16 Sep 2011)
New Revision: 34839
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/BuiltInBeanFactory.java
Log:
JBIDE-9732
https://issues.jboss.org/browse/JBIDE-9732
Built-in bean with type InjectionPoint is added.
Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/BuiltInBeanFactory.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/BuiltInBeanFactory.java 2011-09-16 21:13:27 UTC (rev 34838)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/BuiltInBeanFactory.java 2011-09-16 23:41:01 UTC (rev 34839)
@@ -43,6 +43,7 @@
BUILT_IN.add(CDIConstants.VALIDATOR_TYPE_NAME);
BUILT_IN.add(CDIConstants.BEAN_MANAGER_TYPE_NAME);
BUILT_IN.add(CDIConstants.CONVERSATION_TYPE_NAME);
+ BUILT_IN.add(CDIConstants.INJECTIONPOINT_TYPE_NAME);
}
public static boolean isBuiltIn(IType type) {
14 years, 7 months