From 46a5f3eaa9c0a67cf0fb6f4d39bbd54461fcdbcd Mon Sep 17 00:00:00 2001 From: lingutln Date: Mon, 14 Nov 2011 19:21:05 +0000 Subject: [PATCH] Adding a label functionality. Done by Nikhil. svn path=/; revision=213 --- image_annotation/._build.xml | Bin 0 -> 188 bytes image_annotation/.classpath | 20 ++++ image_annotation/.project | 24 +++++ .../.settings/org.eclipse.jdt.core.prefs | 12 +++ image_annotation/lib/json.jar | Bin 0 -> 32717 bytes .../src/ie/dcu/apps/ist/AppWindow.java | 5 +- .../dcu/apps/ist/views/SegmentationView.java | 90 +++++++++++------- 7 files changed, 115 insertions(+), 36 deletions(-) create mode 100644 image_annotation/._build.xml create mode 100644 image_annotation/.classpath create mode 100644 image_annotation/.project create mode 100644 image_annotation/.settings/org.eclipse.jdt.core.prefs create mode 100644 image_annotation/lib/json.jar diff --git a/image_annotation/._build.xml b/image_annotation/._build.xml new file mode 100644 index 0000000000000000000000000000000000000000..18adcddb0ad252ba3205ad29bb4d7d811e862fda GIT binary patch literal 188 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aTgGS_CMFl<=O&h<7V9M^7NwRjRC9qGlANDYnwzI!t6*$m4Hn4B%u5Aw K4Gj&fxoQFFy&41n literal 0 HcmV?d00001 diff --git a/image_annotation/.classpath b/image_annotation/.classpath new file mode 100644 index 0000000..6a5ba76 --- /dev/null +++ b/image_annotation/.classpath @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/image_annotation/.project b/image_annotation/.project new file mode 100644 index 0000000..b767f9e --- /dev/null +++ b/image_annotation/.project @@ -0,0 +1,24 @@ + + + Segmentation + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + + + plugins1 + 2 + /home/lingutln/Downloads/ist-source/Interactive Segmentation App/plugins + + + diff --git a/image_annotation/.settings/org.eclipse.jdt.core.prefs b/image_annotation/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..b0ea1ab --- /dev/null +++ b/image_annotation/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +#Thu Mar 25 19:16:32 GMT 2010 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/image_annotation/lib/json.jar b/image_annotation/lib/json.jar new file mode 100644 index 0000000000000000000000000000000000000000..82ad5fb63e0fc3438c153fbfbeccba02dc0369d5 GIT binary patch literal 32717 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 b^`HKz;2)nsKtLEDU$Y+ypndm$e)@j^H*CkC literal 0 HcmV?d00001 diff --git a/image_annotation/src/ie/dcu/apps/ist/AppWindow.java b/image_annotation/src/ie/dcu/apps/ist/AppWindow.java index a047dbe..a07bbb0 100644 --- a/image_annotation/src/ie/dcu/apps/ist/AppWindow.java +++ b/image_annotation/src/ie/dcu/apps/ist/AppWindow.java @@ -336,7 +336,10 @@ public class AppWindow extends ApplicationWindow implements FileDropListener { help.add(actions.get(HelpAction.class)); help.add(actions.get(AboutAction.class)); - + + MenuManager annotate = addMenu(bar, "&Annotate"); + annotate.add(actions.get(HelpAction.class)); + if (OsUtils.isMacOSX()) { // Enhance the UI on the Mac IAction aboutAction = actions.get(AboutAction.class); diff --git a/image_annotation/src/ie/dcu/apps/ist/views/SegmentationView.java b/image_annotation/src/ie/dcu/apps/ist/views/SegmentationView.java index 14a1bef..b5b52ee 100644 --- a/image_annotation/src/ie/dcu/apps/ist/views/SegmentationView.java +++ b/image_annotation/src/ie/dcu/apps/ist/views/SegmentationView.java @@ -15,6 +15,8 @@ import java.lang.reflect.InvocationTargetException; import java.net.*; import java.util.Properties; import java.util.logging.*; +import java.io.*; +import org.json.*; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.*; @@ -41,11 +43,11 @@ public class SegmentationView extends Composite { // View handling annotations private final AnnotatedImageControl view; - - // Left, center and right tool bar - private final ToolBar bar1, bar2, bar3; + // Left and right tool bar + private final ToolBar bar1, bar2, bar3; + // Control to change brush size private final BrushControl brushControl; @@ -59,14 +61,14 @@ public class SegmentationView extends Composite { // algorithm, without crashing the application. private RobustSegmenterProxy segmenterProxy; - // Auto segment on update flag private boolean auto = true; - // Combo box housing the selectable views - private Combo combo; + private Combo combo, comboLabel; + // Button for assigning a label to the Segmented image + private Button assign; // Current segmentation tool private Segmenter segmenter; @@ -97,6 +99,7 @@ public class SegmentationView extends Composite { SetPainter, SetLabel, SegmenterOptions; + private ToolAction action; }; @@ -106,9 +109,9 @@ public class SegmentationView extends Composite { this.props = props; painters = new PainterRegistry(); - bar1 = new ToolBar(this, SWT.LEFT | SWT.FLAT); + bar1 = new ToolBar(this, SWT.RIGHT | SWT.FLAT); bar2 = new ToolBar(this, SWT.RIGHT | SWT.FLAT); - bar3 = new ToolBar(this, SWT.CENTER | SWT.FLAT); + bar3 = new ToolBar(this, SWT.RIGHT | SWT.FLAT); view = new AnnotatedImageControl(this, SWT.BORDER); brushControl = new BrushControl(getShell(), SWT.BORDER); eventHandler = new EventHandler(); @@ -170,7 +173,6 @@ public class SegmentationView extends Composite { m.add(getAction(Tool.AutoApply)); m.add(getAction(Tool.Apply)); m.add(getAction(Tool.SegmenterOptions)); - m.add(new Separator()); m.update(true); } @@ -189,15 +191,25 @@ public class SegmentationView extends Composite { private void createToolbar3() { SwtUtils.addLabel(bar3, getAction(Tool.SetLabel).getText()); + comboLabel = SwtUtils.addCombo(bar3, 130, SWT.SIMPLE); + comboLabel.setToolTipText( getAction(Tool.SetLabel).getToolTipText()); + comboLabel.addKeyListener(new KeyListener() { + @Override + public void keyReleased(KeyEvent e) { + comboLabel.remove(0,comboLabel.getItemCount()-1); + setLabel(comboLabel.getText()); + } + @Override + public void keyPressed(KeyEvent arg0) { + // TODO Auto-generated method stub + } + }); ToolItem item = new ToolItem(bar3, SWT.SEPARATOR); - Text text = new Text(bar3, SWT.SINGLE); - text.setToolTipText( getAction(Tool.SetLabel).getToolTipText()); - text.setText("Enter a Label"); - item.setWidth(100); - item.setControl(text); - text.pack(); + assign = new Button(bar3, SWT.PUSH); + assign.setText("Assign"); + item.setWidth(50); + item.setControl(assign); bar3.pack(); - } @@ -211,10 +223,8 @@ public class SegmentationView extends Composite { Point sz1 = bar1.computeSize(SWT.DEFAULT, SWT.DEFAULT); Point sz2 = bar2.computeSize(SWT.DEFAULT, SWT.DEFAULT); - Point sz3 = bar3.computeSize(SWT.DEFAULT, SWT.DEFAULT); - int heightHintOfTwo = Math.max(sz1.y, sz2.y); - int heightHint = Math.max(heightHintOfTwo, sz3.y); + int heightHint = Math.max(sz1.y, sz2.y); // Layout toolbar 1 GridData gd = new GridData(); @@ -229,15 +239,9 @@ public class SegmentationView extends Composite { gd.heightHint = heightHint; bar2.setLayoutData(gd); - // Layout toolbar 3 - gd = new GridData(); - gd.horizontalAlignment = SWT.FILL; - gd.heightHint = heightHint; - bar3.setLayoutData(gd); - // Layout view gd = new GridData(); - gd.verticalIndent = 3; + gd.verticalIndent = 2; gd.horizontalSpan = 3; gd.grabExcessHorizontalSpace = true; gd.grabExcessVerticalSpace = true; @@ -362,13 +366,6 @@ public class SegmentationView extends Composite { } - // For labeling the image - public void setLabel(SegmentationPainter painter) { - view.setPainter(painter); - combo.setText(painter.getName()); - } - - public void setPainter(SegmentationPainter painter) { view.setPainter(painter); combo.setText(painter.getName()); @@ -758,8 +755,31 @@ public class SegmentationView extends Composite { SegmentationPainter painter = painters.get(combo.getText()); setPainter(painter); } - - + + private void setLabel(String content) { + try + { + URL terms = new URL("http://palea.cgrb.oregonstate.edu/paw/services/TermSearch_JSON.php?user=paw&field=name&type=autocomplete&ontology=po&qval="+content+"&format=json&max=20"); + URLConnection conn = terms.openConnection(); + BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); + String inputLine; + JSONObject object = null; + while ((inputLine = in.readLine()) != null) + { + object = new JSONObject(inputLine); + } + JSONArray array = new JSONArray(object.getString("sfautocomplete")); + for(int i=0; i