diff --git a/CHANGELOG.txt b/CHANGELOG.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4259b9e8554292123b147b9337dd8309e31971cf
--- /dev/null
+++ b/CHANGELOG.txt
@@ -0,0 +1,10 @@
+2.1.0
+
++ Adding event broadcaster for TUI context events.
++ Added spatial handler to handle spatial positioning of tangibles.
+
+
+2.0.0
+
++ Added abstraction layer (Adapter) to decouple core from the tangible protocol (TUIO)
++ Added network abstraction layer and implemented concrete examples (Bluetooth, Wifi, and Serial IO)
\ No newline at end of file
diff --git a/TULIP/Readme.txt b/README.txt
similarity index 100%
rename from TULIP/Readme.txt
rename to README.txt
diff --git a/TULIP/.settings/org.eclipse.jdt.ui.prefs b/TULIP/.settings/org.eclipse.jdt.ui.prefs
index 3cf7d845288f3c52757f0a8efed650d3a22fcc0d..392b9458f283cf47638852ad5d9329825c22eec9 100644
--- a/TULIP/.settings/org.eclipse.jdt.ui.prefs
+++ b/TULIP/.settings/org.eclipse.jdt.ui.prefs
@@ -69,7 +69,7 @@ org.eclipse.jdt.ui.keywordthis=false
org.eclipse.jdt.ui.ondemandthreshold=99
org.eclipse.jdt.ui.overrideannotation=true
org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=/**\r\n * Simple getter method for ${bare_field_name}.\r\n * @return The value of ${bare_field_name}.\r\n *//**\r\n * Simple setter method for ${bare_field_name}.\r\n * @param ${bare_field_name}\r\n * \t\tThe value to set ${bare_field_name} to.\r\n *//**\r\n * ${tags}\r\n *//**\r\n * Copyright Luxembourg Institute of Science and Technology, ${year}.\r\n * All rights reserved. If you wish to use this code for any purpose,\r\n * please contact the author(s).\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r\n * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\r\n * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r\n * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\r\n * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\r\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r\n * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n *//**\r\n * @author ${user}\r\n * @since [major].[minor]\r\n * @version [major].[minor].[micro]\r\n * ${tags}\r\n *//** *//**\r\n * ${tags}\r\n *//** {@inheritDoc} *//**\r\n * ${tags}\r\n * ${see_to_target}\r\n */${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}\r\n\r\n\r\n\r\n// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();// ${todo} Auto-generated method stub\r\n${body_statement}${body_statement}\r\n// ${todo} Auto-generated constructor stubreturn ${field};${field} \= ${param};
+org.eclipse.jdt.ui.text.custom_code_templates=/**\r\n * Simple getter method for ${bare_field_name}.\r\n * @return The value of ${bare_field_name}.\r\n *//**\r\n * Simple setter method for ${bare_field_name}.\r\n * @param ${bare_field_name}\r\n * \t\tThe value to set ${bare_field_name} to.\r\n *//**\r\n * ${tags}\r\n *//**\r\n * Copyright Luxembourg Institute of Science and Technology, 2015. All rights reserved.\r\n * \r\n * This file is part of TULIP.\r\n * \r\n * TULIP is free software\: you can redistribute it and/or modify it under the terms of the GNU\r\n * Lesser General Public License as published by the Free Software Foundation, version 3 of the\r\n * License.\r\n * \r\n * TULIP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even\r\n * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser\r\n * General Public License for more details.\r\n * \r\n * You should have received a copy of the GNU Lesser General Public License along with TULIP. If\r\n * not, see <http\://www.gnu.org/licenses/lgpl-3.0.html>.\r\n *//**\r\n * @author ${user}\r\n * @since [major].[minor]\r\n * @version [major].[minor].[micro]\r\n * ${tags}\r\n *//** *//**\r\n * ${tags}\r\n *//** {@inheritDoc} *//**\r\n * ${tags}\r\n * ${see_to_target}\r\n */${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}\r\n\r\n\r\n\r\n// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();// ${todo} Auto-generated method stub\r\n${body_statement}${body_statement}\r\n// ${todo} Auto-generated constructor stubreturn ${field};${field} \= ${param};
sp_cleanup.add_default_serial_version_id=true
sp_cleanup.add_generated_serial_version_id=false
sp_cleanup.add_missing_annotations=true
diff --git a/TULIP/src/lu/list/itis/dkd/tui/event/ContextEvent.java b/TULIP/src/lu/list/itis/dkd/tui/event/ContextEvent.java
index a4bd39af8d00e1bb6474e3de239b74d3a454f87f..200328392cd6b04ee762527bcc52bfa638d30214 100644
--- a/TULIP/src/lu/list/itis/dkd/tui/event/ContextEvent.java
+++ b/TULIP/src/lu/list/itis/dkd/tui/event/ContextEvent.java
@@ -27,7 +27,7 @@ import java.util.EventObject;
*
* @author Eric TOBIAS [eric.tobias@list.lu]
* @since 1.0
- * @version 1.0.2
+ * @version 2.0.42
*/
@NonNullByDefault
public class ContextEvent extends EventObject {
@@ -74,9 +74,9 @@ public class ContextEvent extends EventObject {
* Enumeration denoting all context types that are captured by the enclosing
* {@link ContextEvent} class.
*
- * @author Eric TOBIAS [eric.tobias@tudor.lu]
- * @since 5 Mar 2014
- * @version 1
+ * @author Eric TOBIAS [eric.tobias@list.lu]
+ * @since 1.0
+ * @version 2.0.42
*/
public enum ContextType {
/** A cursor is dropped into the context. */
@@ -90,6 +90,12 @@ public class ContextEvent extends EventObject {
/** An object is moved within the context. */
OBJECT_MOVE,
/** An object is lifted from the context. */
- OBJECT_LIFT;
+ OBJECT_LIFT,
+ /** A blob is dropped from the context. */
+ BLOB_DROP,
+ /** A blob is moved from the context. */
+ BLOB_MOVE,
+ /** A blob is lifted from the context. */
+ BLOB_LIFT;
}
}
\ No newline at end of file
diff --git a/TULIP/src/lu/list/itis/dkd/tui/event/SpatialEvent.java b/TULIP/src/lu/list/itis/dkd/tui/event/SpatialEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..8590bff4d27d3f52dd18cf72c0bcfada31548520
--- /dev/null
+++ b/TULIP/src/lu/list/itis/dkd/tui/event/SpatialEvent.java
@@ -0,0 +1,75 @@
+/**
+ * Copyright Luxembourg Institute of Science and Technology, 2015. All rights reserved.
+ *
+ * This file is part of TULIP.
+ *
+ * TULIP is free software: you can redistribute it and/or modify it under the terms of the GNU
+ * Lesser General Public License as published by the Free Software Foundation, version 3 of the
+ * License.
+ *
+ * TULIP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License along with TULIP. If
+ * not, see .
+ */
+package lu.list.itis.dkd.tui.event;
+
+import lu.list.itis.dkd.dbc.annotation.NonNullByDefault;
+import lu.list.itis.dkd.tui.adapter.TangibleObject;
+import lu.list.itis.dkd.tui.utility.Point;
+import lu.list.itis.dkd.tui.utility.ScreenCoordinates;
+
+import com.google.common.base.Preconditions;
+
+import java.util.EventObject;
+
+/**
+ * Class used to disseminate spatial events. Events are to be triggered when elements in the spatial
+ * domain of the interface are added, removed, or moved. The event contains a source, usually the
+ * tangible object that is the root of the spatial (dis)placement and the location the event was
+ * triggered on, and the type of even.
+ *
+ *
+ * Note that the location is expressed as {@link ScreenCoordinates}.
+ *
+ * @author Eric Tobias [eric.tobias@list.lu]
+ * @since 2.1
+ * @version 2.1.0
+ */
+@NonNullByDefault
+public class SpatialEvent extends EventObject {
+
+ private static final long serialVersionUID = 7414656845719882078L;
+
+ protected Point location;
+
+ /**
+ * Constructor initializing all fields.
+ *
+ * @param source
+ * The source of the {@link SpatialEvent}, that is, the tangible object that triggered
+ * the event.
+ * @param location
+ * The location the event was triggered on. Note that the location must be expressed in
+ * {@link ScreenCoordinates}.
+ * @ore location.getState().getClass() == ScreenCoordinates.class
+ */
+ public SpatialEvent(TangibleObject source, Point location) {
+ super(source);
+
+ Preconditions.checkArgument(location.getState().getClass().equals(ScreenCoordinates.class), "The location must be given in screen coordinates!"); //$NON-NLS-1$
+
+ this.location = location;
+ }
+
+ /**
+ * Simple getter method for location.
+ *
+ * @return The value of location.
+ */
+ public Point getLocation() {
+ return location;
+ }
+}
\ No newline at end of file
diff --git a/TULIP/src/lu/list/itis/dkd/tui/event/SpatialEventListener.java b/TULIP/src/lu/list/itis/dkd/tui/event/SpatialEventListener.java
new file mode 100644
index 0000000000000000000000000000000000000000..0a9637108b688d86f9b5b0ea0f29c2d204aa65bb
--- /dev/null
+++ b/TULIP/src/lu/list/itis/dkd/tui/event/SpatialEventListener.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright Luxembourg Institute of Science and Technology, 2015. All rights reserved.
+ *
+ * This file is part of TULIP.
+ *
+ * TULIP is free software: you can redistribute it and/or modify it under the terms of the GNU
+ * Lesser General Public License as published by the Free Software Foundation, version 3 of the
+ * License.
+ *
+ * TULIP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License along with TULIP. If
+ * not, see .
+ */
+package lu.list.itis.dkd.tui.event;
+
+import lu.list.itis.dkd.dbc.annotation.NonNullByDefault;
+
+import java.util.EventListener;
+
+/**
+ * Interface specifying the contract for {@link SpatialEventListener} instances.
+ *
+ * @author Eric Tobias [eric.tobias@list.lu]
+ * @since 2.1
+ * @version 2.1.0
+ */
+@NonNullByDefault
+public interface SpatialEventListener extends EventListener {
+ /**
+ * Method invoked when the context is changed.
+ *
+ * @param event
+ * The event holding the source and location of the spacial happening.
+ */
+ public void spaceUpdated(SpatialEvent event);
+}
\ No newline at end of file