├── LICENSE ├── README.md ├── build.xml ├── lib ├── gs-algo-1.3 │ ├── gs-algo-1.3-javadoc.jar │ ├── gs-algo-1.3-javadoc.jar.asc │ ├── gs-algo-1.3-sources.jar │ ├── gs-algo-1.3-sources.jar.asc │ ├── gs-algo-1.3.jar │ ├── gs-algo-1.3.jar.asc │ ├── gs-algo-1.3.pom │ └── gs-algo-1.3.pom.asc ├── gs-core-1.3 │ ├── gs-core-1.3-javadoc.jar │ ├── gs-core-1.3-javadoc.jar.asc │ ├── gs-core-1.3-sources.jar │ ├── gs-core-1.3-sources.jar.asc │ ├── gs-core-1.3.jar │ ├── gs-core-1.3.jar.asc │ ├── gs-core-1.3.pom │ └── gs-core-1.3.pom.asc ├── gs-ui-1.3 │ ├── gs-ui-1.3-javadoc.jar │ ├── gs-ui-1.3-javadoc.jar.asc │ ├── gs-ui-1.3-sources.jar │ ├── gs-ui-1.3-sources.jar.asc │ ├── gs-ui-1.3.jar │ ├── gs-ui-1.3.jar.asc │ ├── gs-ui-1.3.pom │ └── gs-ui-1.3.pom.asc ├── java-sdk-3.5.1-jar-with-dependencies.jar ├── json.jar └── twitter4j │ ├── readme-libs.txt │ ├── twitter4j-core.jar │ ├── twitter4j-media-support.jar │ └── twitter4j-stream.jar ├── manifest.mf ├── nbproject ├── build-impl.xml ├── genfiles.properties ├── private │ ├── config.properties │ ├── private.properties │ ├── private.xml │ └── profiler │ │ └── settings.xml ├── project.properties └── project.xml ├── src └── twittervis │ ├── GetEmotion.java │ ├── Greetings.java │ ├── TwitterDevApiKey.java │ ├── TwitterVis.java │ └── stylesheet.css └── style ├── ImagesFromPublication ├── emoji.png ├── hilaryVStrump-timeline.png ├── hilaryVStrump.png ├── iphoneVSsamsung.png ├── ui.png └── vanVSla.png ├── anger.png ├── disgust.png ├── fear.png ├── joy.png └── sad.png /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Xavier Wu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Plexus 2 | _Plexus_ - An Interactive Visualization Tool for Discovering Trends in Public Emotions on Social Media 3 | 4 | ## Designed & Developed by Xavier Wu 5 | 6 | [Download the paper](https://arxiv.org/ftp/arxiv/papers/1701/1701.06270.pdf) 7 | 8 | ![iphoneVSsamsung](https://raw.githubusercontent.com/xavierwu2016/plexus/master/style/ImagesFromPublication/iphoneVSsamsung.png) 9 | 10 | 11 | ### Modules 12 | 13 | _Plexus_ is essentially written with three main modules to produce a complete visualization. 14 | 15 | #### 1. Data Processing 16 | 17 | _Twitter4J_, an unofficial Java library for the Twitter API, processes all the search queries from Twitter. 18 | 19 | #### 2. Emotion Analysis 20 | 21 | Johnson-laird and Oatley [1] produced a theory 22 | that there are five basic emotion modes: happiness, sadness, fear, anger, and 23 | disgust, and other emotional states are only subsets of these five emotions. 24 | Because all emotions are based on the five basic families of emotion modes, 25 | this theory states that a word can attribute to more than one emotion modes. 26 | Therefore, categorizing a word or text to a single emotion is oftentimes 27 | inappropriate. For texts with complex emotions, a quantitative analysis for all 28 | five emotion modes is significant for the accuracy of the investigation. 29 | 30 | The emotion analysis module in this 31 | software is based on the AlchemyLanguage service from IBM, which offers a collection of functions and 32 | APIs for natural language processing and analysis. The Emotion Analysis 33 | function can analyze any textual information in English and return the detected 34 | emotions and their relevance values. It can not only analyze the overall 35 | emotions of an entire text, but also find out the emotions associated with 36 | individual entities or keywords which are also identified by AlchemyLanguage. The relevance values 37 | returned along with five emotions indicate the confidence levels for each of 38 | them, making it convenient for developers to quantify the emotions. 39 | 40 | The emotion 41 | analysis results returned from AlchemyLanguage are in a _JSON_ format, but they are not native _JSON_ objects. _JSON-java_, 42 | a popular _JSON_ package in Java, was 43 | used to convert the emotion results to a _JSON_ 44 | object. This object is parsed to read the values of each emotion and assign 45 | them to five _double_ variables (_joyValue, angerValue, fearValue, 46 | disgustValue, sadnessValue_). A method called _getFinalEmootion_ was created in the _GetEmotion_ class to return the most relevant emotion of a text 47 | based on those five created variables. In this function, a HashMap was created 48 | to store the names and values of emotions. I found HashMap is probably the 49 | easiest way to find the one with the maximum value out of five variables. It 50 | can be used to find either the maximum value or the key with the maximum, or 51 | both. If I only need to fine the maximum of five values, I can do a multiple comparison 52 | using _Math.Max_: 53 | 54 | ` 55 | double maxVar = Math.max(firstVar, Math.max(secondVar, Math.max(thirdVar, Math.max( fourthVar, fifthVar))); 56 | ` 57 | 58 | #### 3. Visualization 59 | 60 | There are many 61 | software toolkits and libraries available for visualization in Java, including _Prefuse_, _Piccolo2D_, _JUNG_, _Graphviz_, and _Gephi_. Eventually _GraphStream_ 62 | was chosen and used to create interactive visualizations for this project. _GraphStream_ is an open-source Java 63 | library for modeling and visualizing data in the form of dynamic graphs. It 64 | shows dynamic interaction networks for various types of data and handles the 65 | graph evolution in time. The changes and transformations of the network can be observed while the 66 | program is modeling and visualizing data.  67 | 68 | ### Software Design 69 | Java, the programming language used for this visualization tool, is an objective-oriented language. The software design was expected to accomplish a high cohesion and low coupling among the fundamental modules of Plexus. Three classes were created to perform the visualization tasks, along with two other property files. 70 | #### 1. TwitterVis 71 | _TwitterVis_ is the main class in this software package. The keywords in the Twitter API search query are defined in this class. _TwitterVis_ retrieves the data according to the given keywords and pass them to the _GetEmotion_ class for emotion analysis. 72 | #### 2. GetEmotion 73 | _GetEmotion_ submits streamed tweets to the AlchemyAPI service and utilizes a HashMap function to find the emotion mode with the largest relevance value. 74 | #### 3. Greetings 75 | _Greetings_ provides a simple GUI for users to input two related topics that they are interested in learning through this visualization. The visualization module will initiate after users hit the “submit” button. 76 | 77 | ![ui](https://raw.githubusercontent.com/xavierwu2016/plexus/master/style/ImagesFromPublication/ui.png) 78 | 79 | #### 4. TwitterDevApiKey 80 | _TwitterDevApiKey_ stores all the credential information, i.e. API tokens and keys, in the program. The reason for this design is that putting all keys in the same location makes it convenient to organize and update the license information in this package. 81 | #### 5. Stylesheet (CSS) 82 | The stylesheet file was created to establish a styling framework for this visualization. All elements’ properties are defined here. Separate styles for users’ actions, such like clicking a node, can also be declared here. The entire stylesheet was written in CSS so that styles of HTML elements can be directly adapted into _Plexus_, a Java program. 83 | 84 | **Vancouver vs. Los Angeles** 85 | 86 | ![vancouver](https://raw.githubusercontent.com/xavierwu2016/plexus/master/style/ImagesFromPublication/vanVSla.png) 87 | 88 | ### Visualization Design 89 | A basic goal of visualizing information is to tell a story or solve a problem. To create an effective visualization, several factors such as spatial position need to be considered. Plexus provides a simple 2D model to have the visualization results presented as a force-directed network graph, in which two clusters are embedded. From the perspective of visualization, force-directed algorithms create graphs that are aesthetically engaging [2] and interactively intriguing. Since the goal of this visualization design is to create a social media data visualization for users without much prior experience or knowledge in this field, 90 | 91 | ________ 92 | **Redesigned Emoji icons:** 93 | 94 | ![emoji](https://raw.githubusercontent.com/xavierwu2016/plexus/master/style/ImagesFromPublication/emoji.png) 95 | 96 | ________ 97 | 98 | **Hilary vs. Trump Visualization with the new design:** 99 | 100 | ![hilaryVStrump](https://raw.githubusercontent.com/xavierwu2016/plexus/master/style/ImagesFromPublication/hilaryVStrump.png) 101 | 102 | ________ 103 | ________ 104 | ### References 105 | 1. P. N. Johnson-laird and Keith Oatley. 1989. The language of emotions: An analysis of a semantic field. Cognition & Emotion 3, 2: 81–123. 106 | 2. Tamassia Roberto. 2013. Handbook of graph drawing and visualization (discrete mathematics and its applications). Chapman & Hall/CRC, New York. 107 | -------------------------------------------------------------------------------- /build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Builds, tests, and runs the project TwitterVis. 12 | 13 | 73 | 74 | -------------------------------------------------------------------------------- /lib/gs-algo-1.3/gs-algo-1.3-javadoc.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/lib/gs-algo-1.3/gs-algo-1.3-javadoc.jar -------------------------------------------------------------------------------- /lib/gs-algo-1.3/gs-algo-1.3-javadoc.jar.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP SIGNATURE----- 2 | Version: GnuPG v2 3 | 4 | iQIcBAABCAAGBQJVI6WNAAoJEFcic6tDtcUcR6kP/0i0YjpOj3Kp8zA/v9Y+vBuO 5 | d7nAk9jF6WX7IDEA2F5dpygauUV+rZ1djC9Vqq66bXG1aIhYyPxgdI+exjDqZys5 6 | WgF0ibZfL9DZs0W/iG5V7EcjI0j9xQgIQ0SJ0mx/ES7kMtzfpLxeC3Al1qBPZ+sF 7 | 5Y4xGN2oZauOf4v+9R3PhaFDK0pQDQ+iOMRWoaadASwPheFg4NIdLR/31WCOuCVm 8 | zDbJgQ1MdhBVWtx/XFbm9NDXOaKNfbUcLSLorZxQcVI66CYfcQx+yCGygGyKkPdL 9 | pWZJV8KwNEPO0WTZgt7pqZ6B7nAPViEXqHMefVqmUWfZm+/GHOLNl+B/yhRdcU+y 10 | t3QthZx5WqQVivr6HcvBCPUKmgcZYGaAZ0GR8BJ1dQT/4Q9YTyYUiIdPdrxIXR97 11 | cqod1PqyiwHSkQi7JHNe6+W1xhUabwYyzGVYwRVOJHaZ/K9yxeHVQ9MhO9GMPGQM 12 | g64ByYPFKG1K3WeHoNxQF5U78RjUKzwUo8JIzUTmAQ9/Ja3mNqYBfsu/WbXd5Gqo 13 | LspG7PPLSyKFqkt15iWyCLSc7LMLVyeVsxsLTgsYvlSMUuQbCvUjV5RnX7m5Wdba 14 | oNrUE/3dLo68BTCqtIVexDgRq69D1pi/VlXKN2YisJ9u/MzUOi0c/EyB89Ut17GU 15 | Yel3ynF2fzuEj9P3+VI4 16 | =ycI4 17 | -----END PGP SIGNATURE----- 18 | -------------------------------------------------------------------------------- /lib/gs-algo-1.3/gs-algo-1.3-sources.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/lib/gs-algo-1.3/gs-algo-1.3-sources.jar -------------------------------------------------------------------------------- /lib/gs-algo-1.3/gs-algo-1.3-sources.jar.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP SIGNATURE----- 2 | Version: GnuPG v2 3 | 4 | iQIcBAABCAAGBQJVI6WNAAoJEFcic6tDtcUc5dUP/30p/M4gzzP+atO0m/XmIEwz 5 | y1OpFT4Tc/8QpfRkOLZK12qXKmd0trZrbUOVrV83abIFg2PNcps1+KwnP/JuP4Jj 6 | g8sVk56QF4fFlC3/1O7oArGeUaqKcdpl0El2DL/P5FSgpaItjSysz8QKKfWgCcOo 7 | zDJGd6Hk+T3xCG2s5YOIH9DREr9yt4bEM0c6bg9BG1Ukm51CgF9Uoqweq1HuwW2t 8 | y6wquYV73lcvoFYypk4poXkW8YYM0JiKsxzNcdeQHflMumvt9n8oKU1oVn9YYzSs 9 | RpcKtSaKlL31DPp/J1Q3jUNqvT4WIfHdjDYfRec+AHv3+OgEB+x1jS0VkL4isNV2 10 | s2WOUxJyrc2/hkV10o2mrxPFWj3hhdVsHqkUvAB0Knk8dHMAiCestTYfEKI0XRQb 11 | t9Uz69M/G7iGh1kDEVhqXw4bfPk8F2QK34smbDOEsvPGcRsIG508Z1bwcYKMJ0D7 12 | /exKySyZ/bQdRwJv8H3XiORl17R6qDJ25WLYFmdhBGV13GJjSpBJ7jXt/SAMiVeG 13 | qK4IFjDCPpv7InWj+DJpIHpk9osm5SfzITFdiLwl3Kc8H9RwTjQDsUvj2zo3CrIy 14 | XJ4p5OPHRf+2QBMgtiDy1/KtzvTc1+TFKjgrf8pzFSsDKBP/YLLwfXJ5F+ReX9DJ 15 | 8RWoTNQt1pZH9mbVnEIQ 16 | =6Oc1 17 | -----END PGP SIGNATURE----- 18 | -------------------------------------------------------------------------------- /lib/gs-algo-1.3/gs-algo-1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/lib/gs-algo-1.3/gs-algo-1.3.jar -------------------------------------------------------------------------------- /lib/gs-algo-1.3/gs-algo-1.3.jar.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP SIGNATURE----- 2 | Version: GnuPG v2 3 | 4 | iQIcBAABCAAGBQJVI6WNAAoJEFcic6tDtcUck5kP/3sNlhXonDLTG+H2ei6qlXsw 5 | BSL9YkgRD3RvIcSLXsEfVh3/q3N9c1J9WFV0C5jXtLOiF3X6PWAEALdPRH/flZLH 6 | ykdbLglzMrnLl7BAmWXRBqKRN6+UtR6fAARleBMz2e9pTT9NFqtZISpGwvtSV2ZF 7 | 7BpwHb9Ksf2V0YpLj+CuJ++m32AMJwXVsjCfpw4MWGvZI50/xx3S9e1imdthRGJ6 8 | xJWErkKGd/FU2N0LLwQh7upK1n/7V6JaEDuVUamcjdNSYBIeVhxwVpuxOk96PPKF 9 | 7SqDEntkTYKrbS09CKpYPy5Xn7rTX97Ppz1u8OzuaEwK/cxulxUp9ykhJ+2xXJAh 10 | FzkibIbLx7pQyV2OCnmVf7RTyUCdbCNlWyhNDtgBH04E09c75zq4ItkTFuE1IDzZ 11 | Jhu9znNa3p4aI4uIUSPEPY0nLwWQ+hqCFQtCAePuW5LQyDnIgs3NSYlzG29FNFMZ 12 | cFrQeBV5YujSY4Vk1H5vmTCDm7AyUizOrnQAiAVW0dBwrtVEExZpl5e/kVRxK3nO 13 | UpYBvJEy5LfKoi8DGg1tbOfkmR4EUhV5nXRTAVKLZ/e+RWsmzU2/2vpeXS/U7RxH 14 | pS86A9s0YOFUQZfAa/a9U4mNFjhBW9gD6jZqYXRrzQ890Odq9VNf1D03Qb+q9g1J 15 | rGeXHQbXJtVZZPGHkRf9 16 | =4cBz 17 | -----END PGP SIGNATURE----- 18 | -------------------------------------------------------------------------------- /lib/gs-algo-1.3/gs-algo-1.3.pom: -------------------------------------------------------------------------------- 1 | 2 | 23 | 25 | 4.0.0 26 | 27 | 28 | org.sonatype.oss 29 | oss-parent 30 | 7 31 | 32 | 33 | org.graphstream 34 | gs-algo 35 | 1.3 36 | 37 | gs-algo 38 | 39 | The GraphStream library. With GraphStream you deal with 40 | graphs. Static and Dynamic. You create them from scratch, from a file 41 | or any source. You display and render them. This package contains algorithms and generators. 42 | 43 | http://graphstream-project.org 44 | 45 | 46 | 47 | scm:git:git://github.com/graphstream/gs-algo.git 48 | scm:git:git://github.com/graphstream/gs-algo.git 49 | https://github.com/graphstream/gs-algo 50 | 51 | 52 | 53 | 54 | github 55 | https://github.com/graphstream/gs-core/issues 56 | 57 | 58 | 59 | UTF-8 60 | 61 | 62 | 63 | 64 | 65 | sbalev 66 | Stefan Balev 67 | stefan.balev@graphstream-project.org 68 | LITIS 69 | http://www.litislab.eu 70 | 71 | 72 | 73 | jbaudry 74 | Julien Baudry 75 | julien.baudry@graphstream-project.org 76 | LITIS 77 | http://www.litislab.eu 78 | 79 | 80 | 81 | adutot 82 | Antoine Dutot 83 | antoine.dutot@graphstream-project.org 84 | LITIS 85 | http://www.litislab.eu 86 | 87 | 88 | 89 | ypigne 90 | Yoann Pigné 91 | yoann.pigne@graphstream-project.org 92 | University of Luxembourg 93 | http://www.uni.lu 94 | 95 | 96 | 97 | gsavin 98 | Guilhelm Savin 99 | guilhelm.savin@graphstream-project.org 100 | LITIS 101 | http://www.litislab.eu 102 | 103 | 104 | 105 | 106 | 107 | Frédéric Guinand 108 | frederic.guinand@univ-lehavre.fr 109 | LITIS 110 | http://www.litislab.eu 111 | 112 | 113 | 114 | Guillaume-Jean Herbiet 115 | guillaume.jean@herbiet.net 116 | University of Luxembourg 117 | http://www.uni.lu 118 | 119 | 120 | 121 | 122 | 123 | LGPL3 124 | http://www.gnu.org/copyleft/lesser.html 125 | 126 | 127 | 128 | Cecill-C 129 | http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html 130 | 131 | 132 | 133 | 134 | 135 | 136 | 140 | release 141 | 142 | 143 | 144 | org.apache.maven.plugins 145 | maven-gpg-plugin 146 | 147 | ]]> 148 | false 149 | 150 | 151 | 152 | sign-artifacts 153 | package 154 | 155 | sign 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | src 167 | bin 168 | src-test 169 | compile 170 | 171 | 172 | 173 | 178 | 179 | 180 | 181 | 182 | src-test 183 | 184 | org/graphstream/**/test/data/** 185 | 186 | 187 | 188 | 189 | 190 | 191 | maven-compiler-plugin 192 | 193 | 1.7 194 | 1.7 195 | 196 | 3.3 197 | 198 | 199 | 200 | maven-eclipse-plugin 201 | org.apache.maven.plugins 202 | 203 | 204 | ** 205 | 206 | 207 | 2.9 208 | 209 | 210 | 211 | org.apache.maven.plugins 212 | maven-jar-plugin 213 | 2.6 214 | 215 | 216 | 217 | org.apache.maven.plugins 218 | maven-javadoc-plugin 219 | 220 | 221 | 222 | complexity 223 | a 224 | Computational Complexity : 225 | 226 | 227 | reference 228 | a 229 | Scientific Reference : 230 | 231 | 232 | true 233 | false 234 | false 235 | false 236 | false 237 | false 238 | public 239 | 1.5 240 | true 241 | true 242 | true 243 | The GraphStream ${project.version} API 244 | 245 | 2.10.2 246 | 247 | 248 | 249 | org.apache.maven.plugins 250 | maven-surefire-plugin 251 | 252 | 253 | org/graphstream/algorithm/test/TestGenerator* 254 | **/*$* 255 | 256 | 257 | 2.18.1 258 | 259 | 260 | 261 | 262 | 263 | 264 | junit 265 | junit 266 | 4.12 267 | false 268 | 269 | 270 | org.apache.commons 271 | commons-math 272 | 2.1 273 | false 274 | 275 | 276 | org.apache.commons 277 | commons-math3 278 | 3.4.1 279 | false 280 | 281 | 282 | org.graphstream 283 | gs-core 284 | ${project.version} 285 | false 286 | 287 | 288 | org.jfree 289 | jfreechart 290 | 1.0.14 291 | false 292 | 293 | 294 | 295 | -------------------------------------------------------------------------------- /lib/gs-algo-1.3/gs-algo-1.3.pom.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP SIGNATURE----- 2 | Version: GnuPG v2 3 | 4 | iQIcBAABCAAGBQJVI6WNAAoJEFcic6tDtcUcRAMP/i5Y+nJFfMnbJTgNlwISGZGe 5 | uE3ZRrfqboeRao2CQX7QB4i71Ml2gmyJJzU+raGTudA2Nw5f+WWyU6R0Q+34MVSR 6 | raUxgWOYZEDeDEpb1GrlVYQRuHXcMfc9GrgY2B7ZCHFVv/xDC545Gptr+3RMs56t 7 | yTl6OFk93E5JMzM0mBLt03UTM46CQUM72L4zkMWyKyt6w/RzruuSC4bLm0DnsvX8 8 | Ep/6RStMWpZIfENkp1mORnAlWu2fQX2uRqs2LxXt1YO5JZ/kgiVM4rVHwb+nwH7s 9 | AZmILIxw0HPnhgnGJqxy2u9WNu7p0zQFx3JUiYBWpDZGeYe0nEtDVfIGTHubz+QT 10 | AIAMquQ27k/qXXV8w1fj/lk2Znt9nqHTQKto+QusbaWkEpUZKJjscIn+2tl7zUY9 11 | S1jzsIMuZBJNXVPZw2KVDDlxhASr+4tcNEW+n+1OMoHawYIG7f7x3aBVipFY6JRh 12 | 7wn/pSj7FS8QH6wvUxqfMQczZ7A17g5XVsSNo51Jbd8UylEZqh+DOEwCre0VR2+1 13 | V+9AaQFn/mXbP1J/YrI3aCdtiQX48DFeca3NOo2pzo81QlhAdlR03CDlIgJoxbsu 14 | rqAQlg2GH+xRIOvWW7cPt9Wni1a0ID8Pn9fFXjCnXJQOl0PLjnOx0m6PNmfwtjHi 15 | M2wbRP91gKbX69yrLJJF 16 | =3tGn 17 | -----END PGP SIGNATURE----- 18 | -------------------------------------------------------------------------------- /lib/gs-core-1.3/gs-core-1.3-javadoc.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/lib/gs-core-1.3/gs-core-1.3-javadoc.jar -------------------------------------------------------------------------------- /lib/gs-core-1.3/gs-core-1.3-javadoc.jar.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP SIGNATURE----- 2 | Version: GnuPG v2 3 | 4 | iQIcBAABCAAGBQJVI6+uAAoJEFcic6tDtcUcu0EP/RtRPTW7LUOk+hksopEB9xwL 5 | +kFRVW4avd7mor+rucRBP5VzxdVDAXFSFI7+mkRtkYrnbMhURxaUu4L+POT6I9k8 6 | 9hZUSoXIUirHKP3VJti78n+Js4pXeXTYsjz0KOwW5lz2RSvrqi9CcdbHrtOq0YLw 7 | 57btDVxrLQXCA4nWsUzMhghx3cJiqSZDeDjZRMVD+X29ZZBVq19mTX4XmMWjA/2P 8 | ywjurxkwfcMAOkPoA6oOmiybWCAdiChQEvIZuUDfgHDtmKnsbi+HI0aJVKKCjBs2 9 | ZyIOqgUIUVv2xxOan37SlA+xurjfIM9TiE2i5DPr1mIlRcX5D6tLZFZ6vcQdyBJW 10 | eNAaHhwQHeQQauymQSFQrukQJM8uAc7MSSXSCxMZhAHlidcYqftjAdyHhji3RbC5 11 | gGNxPBEm9mh1HV/+LDZVkPYXsiaw9IDLiP8+mzueH+K05bfdNv+Ot2jsaYAnjO0h 12 | SEfJxYx6q2tGdRWrw/okOMnLMGACWi9tMjZSoAQWQYcdeFgWdpUE95L0CaWSe8Ty 13 | SfU6gnNcsayvrC9fRjV7BU+jjsmeTCho+nLtfAAYKYnB1O4Mxhdcu8pJQ43gD83f 14 | kFYzmL1d2mowOcrFzTysKLpQaJrrAE/8b6s8SL0HPvQVUncAi7JLEEzRt3inyRSZ 15 | ECTeHIl0NLYdNc/dW/8G 16 | =O35H 17 | -----END PGP SIGNATURE----- 18 | -------------------------------------------------------------------------------- /lib/gs-core-1.3/gs-core-1.3-sources.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/lib/gs-core-1.3/gs-core-1.3-sources.jar -------------------------------------------------------------------------------- /lib/gs-core-1.3/gs-core-1.3-sources.jar.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP SIGNATURE----- 2 | Version: GnuPG v2 3 | 4 | iQIcBAABCAAGBQJVI6+uAAoJEFcic6tDtcUczfoP/Rx4C/o7pNjWUXzAeIQfVZUH 5 | lGvrJxCAhQpti+kA0p8FymXXK274kMVTalCgKE4vQjPCpA4g4Bv77RjHvIVMTg+e 6 | ZHt8CpR31FbsF5hgiWASjduosQjaP5sFdTbzXzBYFOhSv6qkZ+soaP0Y61mNXv7x 7 | jqtKBGf66VtYvN3wFloCoUJ2AA8yFE9f54484QSi/Qkdb/CGh5cPQwisqwiD2hDh 8 | XTQBHF5QoKZEZJ5Cw139C2atPOS2ECvcNRpYAwbf73zcH/LsRkgRbPJNKmiMDkgq 9 | YeuDXctDRsg4Eyzl0NNhi5rr71R3GpYA1W7rLMg6wN57txKXVfiCDxl8KI+YjM+P 10 | Ef5h5qpJ2p5zF1eOrq6Ymnxl+7MoOKeRzKKPWSZEx2Au9lsEo11JOQ3Y76xQDe5P 11 | MqmmiaYKsOZAJXOf7vKUu7KUKe6gn2xUt+ybm22ExFPLf7pUs5jpT/AlzSJZJOia 12 | zfIWh6UJYGsfqVRnJ69ngW1hqoZRSoL3273cbuVlt/FuSZjhHlh3fyL0sFtWHvpp 13 | 7BDkkQL2gRo5lq2D1tKUuLuF4DlaNlZEuBK1XgdUhOoTG4DYQAjODCsX168vIxwG 14 | KuaYTmmnUZml2/17M6jkH/gRDo8VK9a969R1ll2BsydXnsGvTb7U3+6JqzWC2uyU 15 | x0EKyV4jfdd+9LZ0Eri8 16 | =wzS0 17 | -----END PGP SIGNATURE----- 18 | -------------------------------------------------------------------------------- /lib/gs-core-1.3/gs-core-1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/lib/gs-core-1.3/gs-core-1.3.jar -------------------------------------------------------------------------------- /lib/gs-core-1.3/gs-core-1.3.jar.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP SIGNATURE----- 2 | Version: GnuPG v2 3 | 4 | iQIcBAABCAAGBQJVI6+ZAAoJEFcic6tDtcUcezEP/RGwl9a6SQu6UZjc+t8MOKvN 5 | xWAj/qnnndApZw60P7g3QfA9QB1rU2aSZpIVNFlYSODNBdTgXEMgdb3o2dqCN1by 6 | 9k+Oc5pNzOatuloc00wfgwf4p757Hnuu/W9dtD7oLloCc8Zlm9yqyzCXQCz7ol0P 7 | wMhCf6lCTOri2BrfnlehGQ7rrgm34jKmio9XEi3wCqBaZ3d/EA29moZk8tVsucM3 8 | utV4dpT75khMgVxFT6+HtJMT7+MyfmBJt7aMNs/EzCs5y+lUs8n0D+vSMzbtYUxf 9 | 6WtYsjmjfBo9cJj7r2Y7p2JdK2RoDeVbxzENJMwb+qY+E0/65DnEheetfvkqKNcR 10 | HOlFRMP2J/Sky1nB6b6gZTJi6HWcx5s4sgwyHhFlGhA1Q1GwbfttM6GD3Rtt4Ka3 11 | rNAXdnHelg7Db0jKHCKiwcnjhSsZvdi6XajDuNp75BDbT0EzN/oHNRtBSJO8r9mp 12 | rEJSiO6wmf9Z1bVFQMqJCbu6vygiEHS5F2h3APi8RF5k43O7JKxnGYwz3oZc7zgR 13 | KY4U1RNPeXoCQH0cc4Uh+PcXb9wkIA5s7wxr1S1Sya9MzV75echWSL76IpLvpDC0 14 | ue0Bz2xQitvQfUDOBKguYJLH1mro7sd+hT879wUJkWQneW3rhkblDmUmtgvGl2GI 15 | mynsXW9gD2+8j1MTaB3O 16 | =4j/o 17 | -----END PGP SIGNATURE----- 18 | -------------------------------------------------------------------------------- /lib/gs-core-1.3/gs-core-1.3.pom: -------------------------------------------------------------------------------- 1 | 2 | 23 | 25 | 4.0.0 26 | 27 | 28 | org.sonatype.oss 29 | oss-parent 30 | 7 31 | 32 | 33 | org.graphstream 34 | gs-core 35 | 1.3 36 | 37 | gs-core 38 | 39 | The GraphStream library. With GraphStream you deal with 40 | graphs. Static and Dynamic. You create them from scratch, from a file 41 | or any source. You display and render them. This is the core package 42 | that contains the minimal needed to read, display and write a graph. 43 | 44 | http://graphstream-project.org 45 | 46 | 47 | 48 | scm:git:git://github.com/graphstream/gs-core.git 49 | scm:git:git://github.com/graphstream/gs-core.git 50 | https://github.com/graphstream/gs-core 51 | 52 | 53 | 54 | 55 | github 56 | https://github.com/graphstream/gs-core/issues 57 | 58 | 59 | 60 | UTF-8 61 | 62 | 63 | 65 | 66 | 67 | sbalev 68 | Stefan Balev 69 | stefan.balev@graphstream-project.org 70 | LITIS 71 | http://www.litislab.eu 72 | 73 | 74 | 75 | jbaudry 76 | Julien Baudry 77 | julien.baudry@graphstream-project.org 78 | LITIS 79 | http://www.litislab.eu 80 | 81 | 82 | 83 | adutot 84 | Antoine Dutot 85 | antoine.dutot@graphstream-project.org 86 | LITIS 87 | http://www.litislab.eu 88 | 89 | 90 | 91 | ypigne 92 | Yoann Pigné 93 | yoann.pigne@graphstream-project.org 94 | University of Luxembourg 95 | http://www.uni.lu 96 | 97 | 98 | 99 | gsavin 100 | Guilhelm Savin 101 | guilhelm.savin@graphstream-project.org 102 | LITIS 103 | http://www.litislab.eu 104 | 105 | 106 | 107 | 108 | 109 | Frédéric Guinand 110 | frederic.guinand@univ-lehavre.fr 111 | LITIS 112 | http://www.litislab.eu 113 | 114 | 115 | 116 | Richard O. Legendi 117 | richard.legendi@univ-lehavre.fr 118 | Eötvös Loránd University, Faculty of Informatics 119 | http://people.inf.elte.hu/legendi/ 120 | 121 | 122 | 123 | 124 | 125 | LGPL3 126 | http://www.gnu.org/copyleft/lesser.html 127 | 128 | 129 | 130 | Cecill-C 131 | http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html 132 | 133 | 134 | 135 | 136 | 137 | 138 | 144 | nodeps 145 | 146 | 147 | 148 | ../../gs-deps/mbox2/target/classes 149 | 150 | org/**/*.class 151 | 152 | 153 | 154 | ../../gs-deps/pherd/target/classes 155 | 156 | org/**/*.class 157 | 158 | 159 | 160 | 161 | 162 | 163 | 167 | release 168 | 169 | 170 | 171 | org.apache.maven.plugins 172 | maven-gpg-plugin 173 | 174 | ]]> 175 | false 176 | 177 | 178 | 179 | sign-artifacts 180 | package 181 | 182 | sign 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | src 194 | bin 195 | src-test 196 | compile 197 | 198 | 199 | 200 | 201 | src 202 | 203 | org/graphstream/ui/graphicGraph/stylesheet/rgb.properties 204 | 205 | 206 | 207 | 208 | 209 | 210 | src-test 211 | 212 | org/graphstream/**/test/data/** 213 | 214 | 215 | 216 | 217 | 218 | 219 | maven-compiler-plugin 220 | 221 | 1.7 222 | 1.7 223 | 224 | org/graphstream/stream/file/FileSinkSWF.java 225 | 226 | 227 | 3.3 228 | 229 | 230 | 231 | maven-eclipse-plugin 232 | org.apache.maven.plugins 233 | 234 | 235 | ** 236 | 237 | 238 | 2.9 239 | 240 | 241 | 242 | org.apache.maven.plugins 243 | maven-jar-plugin 244 | 2.6 245 | 246 | 247 | 248 | org.apache.maven.plugins 249 | maven-javadoc-plugin 250 | 251 | 252 | 253 | complexity 254 | a 255 | Computational Complexity : 256 | 257 | 258 | reference 259 | a 260 | Scientific Reference : 261 | 262 | 263 | true 264 | false 265 | false 266 | false 267 | false 268 | false 269 | public 270 | 1.5 271 | true 272 | true 273 | true 274 | The GraphStream ${project.version} API 275 | 276 | 2.10.2 277 | 278 | 279 | org.apache.maven.plugins 280 | maven-surefire-plugin 281 | 282 | 283 | org/graphstream/ui/viewer/test/**/ 284 | **/*$* 285 | 286 | 287 | 2.18.1 288 | 289 | 290 | 291 | 292 | 293 | 294 | junit 295 | junit 296 | 4.12 297 | false 298 | 299 | 300 | org.graphstream 301 | pherd 302 | 1.0 303 | false 304 | 305 | 306 | org.graphstream 307 | mbox2 308 | 1.0 309 | false 310 | 311 | 312 | 313 | 314 | -------------------------------------------------------------------------------- /lib/gs-core-1.3/gs-core-1.3.pom.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP SIGNATURE----- 2 | Version: GnuPG v2 3 | 4 | iQIcBAABCAAGBQJVI6+uAAoJEFcic6tDtcUcm8AP/0fcGiTlJ+LjpLMaubtjuTtS 5 | Exze8FFjsPa79IC7nssnf0rm3FDC1GAr59T6HNPT7N8r/BJVppD+Vq2MZcRUSNMS 6 | vbgVdwc2je5x7+jliDTBaiPZSeke2GJNMTHT2mMWm/Vga8J59V5U/Gvt1xLRwIUq 7 | pI4jytV+bhryGdE00xNTqoSJrAXrae3Pxp5tb2d8wmJ74HaBe/em7Mb82pUb/G/S 8 | ZdC51iSmmo1uArUOHzDT/V70y38ZO4uKkKzF8oc+WsiBe7Ig+gTBhCE6aqTjC2FB 9 | odAxQiJ2Tvo/qeNgUWYflnDPySVOAG/MNshnintv+zSOqhQaOSKTVoXRS6k0s0nm 10 | j2KbC7B6BuGNDYHZ0TyO4LixMOgNwqMp8JN4jvWMxSG7BBzaU9pHrvsJHJdLj6Yw 11 | WLUG7kY6AmYOdaYVWJqf/aOAv+f4NDURwAvU5ORbNYIycA+xbsuVye7C5c3c+DQ9 12 | bqkylyeJq7Ba/+OIeVkyZF7dmN3g+x8FJFPixFOsRTYqKD4I+Rr5/aZWOGVQoJbv 13 | tFttShT4pu/DbywQ890JCaPtKdf2WojR8ZNgkcofkUND83ntnhm2FJz+H5mEWOw7 14 | 8AWJiz3irYA5d+bYO7Whww9CsH292XlCUdUypIybFKv+ryF5HvQmGpZxnqPp2Ey7 15 | dyxfozrh/Uhdh+bVLZhK 16 | =8JdF 17 | -----END PGP SIGNATURE----- 18 | -------------------------------------------------------------------------------- /lib/gs-ui-1.3/gs-ui-1.3-javadoc.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/lib/gs-ui-1.3/gs-ui-1.3-javadoc.jar -------------------------------------------------------------------------------- /lib/gs-ui-1.3/gs-ui-1.3-javadoc.jar.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP SIGNATURE----- 2 | Version: GnuPG v2 3 | 4 | iQIcBAABCAAGBQJVI85YAAoJEFcic6tDtcUcvnoP+QFbmAiUFHOY5NzZ+TXory/+ 5 | vPys1yfmc3bDtCrVoSSY7IDBXOKHgWyFbpHvIriFB/03NdbOWeKv4wkwLzaZ1UQB 6 | 03fuHjLbzzXgXx5gtH5kjzar04DOMVOt/uAZObtgF+zksHbeJgTX5I/puj2qXYSM 7 | T1d7wh2hqufxwXJFSHfsKO0RS4Q35eqRJffprZG7o40j/1Jew05dxm+7n7jkNyF8 8 | zXtAEUAd8XCFxyxM/4Mig6aXJn1TZ4GOPgRt/N5WH3MJ12qPIakPUNU7qCyK+VHS 9 | habbi07pmQ0q9maYp1zKcVauOd3jNeDr1jHrvJRZN2oK70jBhNNRMn26WNKU8SFt 10 | YwlxlO3jkzmuKlML2C86eQpLYnqiqEY7080i0BOvWgWuPIFQgBrUOLnBqaNiEl+H 11 | wy0OTWRXtx9nmsIl08OdmqF5IYIyXnUA3Rg9WdxM6dL2HANyNiBf0TT/g7zhrjID 12 | YxZaSI9sb/DFBg6CDAqKR9B9qWo6SceLEX4LYK6uL3Ar9u9QCM+v7gDf+5vs97nt 13 | tQkT/uhPKgFfFuU1Cflm3qlh7/x63qgtq0qT5P3cljKl3Zr7qVGdOuLlqGJyvV6w 14 | A/7pnGK3QeVa8ygir/QZQDoNXla6busU7NWFGcejRL6smoJ5GBPh3bDIIrJyB74/ 15 | j263b0HdiYvEsQHo8V/B 16 | =ddRY 17 | -----END PGP SIGNATURE----- 18 | -------------------------------------------------------------------------------- /lib/gs-ui-1.3/gs-ui-1.3-sources.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/lib/gs-ui-1.3/gs-ui-1.3-sources.jar -------------------------------------------------------------------------------- /lib/gs-ui-1.3/gs-ui-1.3-sources.jar.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP SIGNATURE----- 2 | Version: GnuPG v2 3 | 4 | iQIcBAABCAAGBQJVI84tAAoJEFcic6tDtcUcP2kP/0YnPFOaKqxqIio68UwHZp7Y 5 | fMfp1a1pJt1Tu93fyr/zGA7MCrJ020pwW4V8qFJrsc/Bz2mV8Q013vTTBc3g/zmy 6 | aClw1WItf5IrNIJ25s66U2xmqzBSzcEKjPIeI6aQfBRa10yQbLQ80hw0XtzoS55p 7 | +ZgtgnoXfgvEDsOi/n5pc24P37JHbX2ZHVHFu2+hi5vhVdih8BUnRntf5Kc/t47r 8 | d/vGEIhEe89UgWJOwsrkkaMDI/9O1/c9A7uvJIrT/nvRLBEbQsyeuZZsmCM0gP5d 9 | ugetYRj6Y8/j0nMspQqYfVATdlTKQCr5rUhREB49hatU8mt9bBIkdXzpYl784zX5 10 | Vi5HmVBLQx9ETBgItSYfifsT80kcnYu+azJzSXSQiP2Kpyphi4+Za7o+jTGucW/M 11 | ncKciq3kZOVlBpodn2k4Bl0x+uDwMrvyF4roR7X05OPwAQQpRS6Wz4hnDFz24pbC 12 | vSggRZtoDLWdluY9/VgPpzMkC9BZnzwY8mgHX7GMq+gQFF9/BTJhvDx2MTU8qOF0 13 | P149EIiYL4d47L7djtiale07b3KN1muMeh2d3yFSAwJfL/X2I98eZDgOwz15EGWG 14 | 7KyHeJSUzOjfhIk6OGqmol3WrERsE6RRmdOHFfboCdd2yLbtCgiBBve9GnwE63ew 15 | p7sjKHK+gu8hobzH8Jla 16 | =8Uq+ 17 | -----END PGP SIGNATURE----- 18 | -------------------------------------------------------------------------------- /lib/gs-ui-1.3/gs-ui-1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/lib/gs-ui-1.3/gs-ui-1.3.jar -------------------------------------------------------------------------------- /lib/gs-ui-1.3/gs-ui-1.3.jar.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP SIGNATURE----- 2 | Version: GnuPG v2 3 | 4 | iQIcBAABCAAGBQJVI84tAAoJEFcic6tDtcUcGOYQAJxx6xLnze2kiv6dWSaiJMwc 5 | Lq5IrJPAWn1Ed89g3Ay2E8cYSTwYxGafBkGTyL3KyefS6W2xrnJjhHOj4GckZqSU 6 | O8x6vLJL5/i4uXY3EtN594nRH23U1fXCFz+oVXBREprrUZ9Z+x3DiD3zzjMHCI9H 7 | Js349kbLXkTM9JNdA9I7Zf4rJyENwQznG5Q7X6s2YHebulh9rdJnG9aVGm66Hx5+ 8 | AktlcctqwUd9fdK50lo+UBHOI/RksX88WR+JyNh/mMzRdLJuHyxotAPQl9sXnJdq 9 | qX7P4vI2i4V2parPuk4JFe0weJ0NQCYL//0E81KPABj2F859K6DtsoHn8Zqw5dtw 10 | J0Luj5GNGPirQRPgDdmVc7ewKAKOdJAFmejMAR8ShKNK9E1D+gp/wgbzgsQqy9t0 11 | f47d2dWOk1WZa5Q5LzU8gpJc4IV7t6EAbbSMj4uS+gkVWpTwRnQcUMl0dsOg8fw+ 12 | Z9bL6zenamyD8boE7e/jCrDMaYvZCm/hD9Y9qtWupbYYX3c95Yy3WTeQSITBAq11 13 | gdHG6GDPdb3A1wm+h8oI2xVLgB/7Al1a/jnppnDuORZBhAdLKXevef6dYyIa5Ppc 14 | PzYNwjqbybARLW9HtjGtKqGNt8EzMYyipC9eaGYEqJC2ZkcYLKhSg1UM1ItJTXmr 15 | 6AuIR0liKH3Oyp+Q4KxH 16 | =Qoor 17 | -----END PGP SIGNATURE----- 18 | -------------------------------------------------------------------------------- /lib/gs-ui-1.3/gs-ui-1.3.pom: -------------------------------------------------------------------------------- 1 | 2 | 23 | 25 | 4.0.0 26 | 27 | 28 | org.sonatype.oss 29 | oss-parent 30 | 7 31 | 32 | 33 | org.graphstream 34 | gs-ui 35 | 1.3 36 | 37 | gs-ui 38 | 39 | The GraphStream library. With GraphStream you deal with 40 | graphs. Static and Dynamic. You create them from scratch, from a file 41 | or any source. You display and render them. 42 | 43 | http://graphstream-project.org 44 | 45 | 46 | 47 | scm:git:git://github.com/graphstream/gs-ui.git 48 | scm:git:git://github.com/graphstream/gs-ui.git 49 | https://github.com/graphstream/gs-ui 50 | 51 | 52 | 53 | 54 | github 55 | https://github.com/graphstream/gs-core/issues 56 | 57 | 58 | 59 | UTF-8 60 | 2.10.1 61 | 62 | 63 | 64 | 65 | 66 | sbalev 67 | Stefan Balev 68 | stefan.balev@graphstream-project.org 69 | LITIS 70 | http://www.litislab.eu 71 | 72 | 73 | 74 | jbaudry 75 | Julien Baudry 76 | julien.baudry@graphstream-project.org 77 | LITIS 78 | http://www.litislab.eu 79 | 80 | 81 | 82 | adutot 83 | Antoine Dutot 84 | antoine.dutot@graphstream-project.org 85 | LITIS 86 | http://www.litislab.eu 87 | 88 | 89 | 90 | ypigne 91 | Yoann Pigné 92 | yoann.pigne@graphstream-project.org 93 | University of Luxembourg 94 | http://www.uni.lu 95 | 96 | 97 | 98 | gsavin 99 | Guilhelm Savin 100 | guilhelm.savin@graphstream-project.org 101 | LITIS 102 | http://www.litislab.eu 103 | 104 | 105 | 106 | 107 | 108 | LGPL3 109 | http://www.gnu.org/copyleft/lesser.html 110 | 111 | 112 | 113 | Cecill-C 114 | http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html 115 | 116 | 117 | 118 | 119 | 120 | 121 | 126 | proguard 127 | 128 | 129 | 130 | com.github.wvengen 131 | proguard-maven-plugin 132 | 133 | 134 | package 135 | 136 | proguard 137 | 138 | 139 | 140 | 141 | 142 | 143 | 145 | 146 | 147 | ${java.home}/lib/rt.jar 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 161 | nodeps 162 | 163 | 164 | 165 | ../scalalib 166 | 167 | scala/**/*.class 168 | 169 | 170 | 171 | 172 | 173 | 174 | 178 | release 179 | 180 | 181 | 182 | org.apache.maven.plugins 183 | maven-gpg-plugin 184 | 185 | ]]> 186 | false 187 | 188 | 189 | 190 | sign-artifacts 191 | package 192 | 193 | sign 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | scala-2.9.0 203 | 204 | 2.9.0 205 | 206 | 207 | 208 | scala-2.10.1 209 | 210 | 2.10.1 211 | 212 | 213 | 214 | 215 | 216 | src-scala 217 | bin/classes 218 | compile 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | maven-compiler-plugin 228 | 3.3 229 | 230 | 1.7 231 | 1.7 232 | 233 | 234 | 235 | 236 | maven-eclipse-plugin 237 | org.apache.maven.plugins 238 | 2.9 239 | 240 | 241 | ** 242 | 243 | 244 | 245 | 246 | 247 | org.apache.maven.plugins 248 | maven-jar-plugin 249 | 2.6 250 | 251 | 252 | org/graphstream/ui/j2dviewer/renderer/test 253 | org/graphstream/ui/j2dviewer/renderer/test/** 254 | 255 | 256 | 257 | 258 | default-jar 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | org.apache.maven.plugins 268 | maven-javadoc-plugin 269 | 2.10.2 270 | 271 | 272 | 273 | complexity 274 | a 275 | Computational Complexity : 276 | 277 | 278 | reference 279 | a 280 | Scientific Reference : 281 | 282 | 283 | true 284 | false 285 | false 286 | false 287 | false 288 | false 289 | public 290 | 1.5 291 | true 292 | true 293 | true 294 | The GraphStream ${project.version} API 295 | 296 | **.scala 297 | 298 | 299 | 300 | 301 | 302 | org.apache.maven.plugins 303 | maven-surefire-plugin 304 | 2.18.1 305 | 306 | 307 | 308 | org.scala-tools 309 | maven-scala-plugin 310 | 2.15.2 311 | 312 | 313 | 314 | compile 315 | testCompile 316 | 317 | 318 | 319 | 322 | 323 | 324 | 325 | org.apache.maven.plugins 326 | maven-clean-plugin 327 | 2.6.1 328 | 329 | 330 | 331 | bin/ 332 | 333 | classes.timestamp 334 | 335 | false 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | junit 346 | junit 347 | 4.12 348 | false 349 | 350 | 351 | org.graphstream 352 | gs-core 353 | ${project.version} 354 | false 355 | 356 | 357 | org.graphstream 358 | gs-algo 359 | ${project.version} 360 | false 361 | 362 | 363 | org.scala-lang 364 | scala-library 365 | ${scala.version} 366 | false 367 | 368 | 369 | 370 | -------------------------------------------------------------------------------- /lib/gs-ui-1.3/gs-ui-1.3.pom.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP SIGNATURE----- 2 | Version: GnuPG v2 3 | 4 | iQIcBAABCAAGBQJVI84tAAoJEFcic6tDtcUcTBoP/2T2fMfMkEevIGuDkvwnDTlv 5 | M2EVbe8zvUuYoX9AWtvv5K2SmsilCfjhw1mfgcMOa2ckgs2ke6F6u+cAY08yKd/7 6 | prFUxN8BAVmIp7Z7Dk+APOjfyTKbxCug/zESseN6WUb1Q2z2fsSdDLvHE5olTM+J 7 | Kbi0w7xrBKD0/4WZ17v/P8FC2u2mtQAi9a4/OAqR7bmh09CRfEI9M4RfPfyg/Rjx 8 | O/vxdyPO8TdRlDYfrL992At+GvsEPO1nfRJPP2CHHZEB9xWziET0MDQxrLFicE8G 9 | sRVZuJV+Hp7Z7XDWk63VTtcECCrQbUjX1PGGXlIZsamouUosnuf9WeCtlpgQAYQd 10 | zK6O394Z2rHCF/2ZxIKJle6z0wr7YRg+X/O8nLO4scLPU+JYMn3jKmAQBFGEKJKe 11 | l5lVbYRlRPgFt0wk13G5X+/nvhOrfN+IF1BASGLC/R0aybqz7iPnYxWEDJrFayPq 12 | zJeQJsClq5QeZYgYlNATB/9hKgEjuvryUE+mQ7ZMiD0zYAvcfcOqPetqNxWv/O7r 13 | JYZetfE0CDPEr+p6IOCGX0xghFxpMk+fMxTwbnD7nUqXubykfqWytZXlMap01ycG 14 | okVD0zDcCTKA4n5EeCGeCzyrDbvq8xjm/fR1uO3qjzKSNbpX/3cjtwp70kH/xQT8 15 | r6Lo4IgCX7utoBQTDZrT 16 | =lZ+K 17 | -----END PGP SIGNATURE----- 18 | -------------------------------------------------------------------------------- /lib/java-sdk-3.5.1-jar-with-dependencies.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/lib/java-sdk-3.5.1-jar-with-dependencies.jar -------------------------------------------------------------------------------- /lib/json.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/lib/json.jar -------------------------------------------------------------------------------- /lib/twitter4j/readme-libs.txt: -------------------------------------------------------------------------------- 1 | Twittetr4J is a Twitter API binding library for the Java language licensed under Apache License 2.0. 2 | 3 | Twitter4J includes software from JSON.org to parse JSON response from the Twitter API. You can see the license term at http://www.JSON.org/license.html 4 | 5 | readme-libs.txt - this file 6 | twitter4j-core.jar - REST and Search API support 7 | twitter4j-async.jar - Async API support : use with twitter4j-core 8 | twitter4j-media-support.jar - media API support : use with twitter4j-core 9 | twitter4j-stream.jar - Streaming API support : use with twitter4j-core 10 | twitter4j-spdy.jar - SPDY / HTTP2.0 support : adds SPDY / HTTP2.0 support, boosts Twitter4J performance, reduce packets, save the earth 11 | -------------------------------------------------------------------------------- /lib/twitter4j/twitter4j-core.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/lib/twitter4j/twitter4j-core.jar -------------------------------------------------------------------------------- /lib/twitter4j/twitter4j-media-support.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/lib/twitter4j/twitter4j-media-support.jar -------------------------------------------------------------------------------- /lib/twitter4j/twitter4j-stream.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/lib/twitter4j/twitter4j-stream.jar -------------------------------------------------------------------------------- /manifest.mf: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | X-COMMENT: Main-Class will be added automatically by build 3 | 4 | -------------------------------------------------------------------------------- /nbproject/build-impl.xml: -------------------------------------------------------------------------------- 1 | 2 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | Must set src.dir 232 | Must set build.dir 233 | Must set dist.dir 234 | Must set build.classes.dir 235 | Must set dist.javadoc.dir 236 | Must set build.test.classes.dir 237 | Must set build.test.results.dir 238 | Must set build.classes.excludes 239 | Must set dist.jar 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | Must set javac.includes 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | No tests executed. 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | Must set JVM to use for profiling in profiler.info.jvm 710 | Must set profiler agent JVM arguments in profiler.info.jvmargs.agent 711 | 712 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 878 | 879 | 880 | 881 | 882 | 883 | 884 | 885 | 886 | 887 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 | 900 | 901 | 902 | 903 | 904 | 905 | 906 | 907 | 908 | 909 | 910 | 911 | 912 | 913 | 914 | 915 | 916 | 917 | 918 | 919 | 920 | 921 | 922 | 923 | 924 | 925 | 926 | 927 | 928 | 929 | 930 | 931 | 932 | 933 | 934 | 935 | 936 | 937 | 938 | Must select some files in the IDE or set javac.includes 939 | 940 | 941 | 942 | 943 | 944 | 945 | 946 | 947 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 | 961 | 962 | 963 | 964 | 965 | 966 | 967 | 968 | 969 | 970 | 971 | 972 | 973 | 974 | 975 | 976 | 977 | 978 | 979 | 980 | 981 | 982 | 983 | 984 | 985 | 986 | 987 | 988 | To run this application from the command line without Ant, try: 989 | 990 | java -jar "${dist.jar.resolved}" 991 | 992 | 993 | 994 | 995 | 996 | 997 | 998 | 999 | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 | 1010 | 1011 | 1012 | 1013 | 1014 | 1015 | 1016 | 1017 | 1018 | 1019 | 1020 | 1021 | 1026 | 1027 | 1028 | 1029 | 1030 | 1031 | 1032 | 1033 | 1034 | 1035 | 1036 | 1037 | Must select one file in the IDE or set run.class 1038 | 1039 | 1040 | 1041 | Must select one file in the IDE or set run.class 1042 | 1043 | 1044 | 1049 | 1050 | 1051 | 1052 | 1053 | 1054 | 1055 | 1056 | 1057 | 1058 | 1059 | 1060 | 1061 | 1062 | 1063 | 1064 | 1065 | 1066 | 1067 | 1068 | Must select one file in the IDE or set debug.class 1069 | 1070 | 1071 | 1072 | 1073 | Must select one file in the IDE or set debug.class 1074 | 1075 | 1076 | 1077 | 1078 | Must set fix.includes 1079 | 1080 | 1081 | 1082 | 1083 | 1084 | 1085 | 1090 | 1093 | 1094 | This target only works when run from inside the NetBeans IDE. 1095 | 1096 | 1097 | 1098 | 1099 | 1100 | 1101 | 1102 | 1103 | Must select one file in the IDE or set profile.class 1104 | This target only works when run from inside the NetBeans IDE. 1105 | 1106 | 1107 | 1108 | 1109 | 1110 | 1111 | 1112 | 1113 | This target only works when run from inside the NetBeans IDE. 1114 | 1115 | 1116 | 1117 | 1118 | 1119 | 1120 | 1121 | 1122 | 1123 | 1124 | 1125 | 1126 | This target only works when run from inside the NetBeans IDE. 1127 | 1128 | 1129 | 1130 | 1131 | 1132 | 1133 | 1134 | 1135 | 1136 | 1137 | 1138 | 1139 | 1140 | 1141 | 1142 | 1143 | 1144 | 1145 | 1146 | 1147 | 1148 | 1151 | 1152 | 1153 | 1154 | 1155 | 1156 | 1157 | 1158 | 1159 | 1160 | 1161 | 1162 | 1163 | 1164 | Must select one file in the IDE or set run.class 1165 | 1166 | 1167 | 1168 | 1169 | 1170 | Must select some files in the IDE or set test.includes 1171 | 1172 | 1173 | 1174 | 1175 | Must select one file in the IDE or set run.class 1176 | 1177 | 1178 | 1179 | 1180 | Must select one file in the IDE or set applet.url 1181 | 1182 | 1183 | 1184 | 1189 | 1190 | 1191 | 1192 | 1193 | 1194 | 1195 | 1196 | 1197 | 1198 | 1199 | 1200 | 1201 | 1202 | 1203 | 1204 | 1205 | 1206 | 1207 | 1208 | 1209 | 1210 | 1211 | 1212 | 1213 | 1214 | 1215 | 1216 | 1217 | 1218 | 1219 | 1220 | 1221 | 1222 | 1223 | 1224 | 1225 | 1226 | 1227 | 1228 | 1233 | 1234 | 1235 | 1236 | 1237 | 1238 | 1239 | 1240 | 1241 | 1242 | 1243 | 1244 | 1245 | 1246 | 1247 | 1248 | 1249 | 1250 | 1251 | 1252 | 1253 | 1254 | 1255 | 1256 | 1257 | Must select some files in the IDE or set javac.includes 1258 | 1259 | 1260 | 1261 | 1262 | 1263 | 1264 | 1265 | 1266 | 1267 | 1272 | 1273 | 1274 | 1275 | 1276 | 1277 | 1278 | 1279 | Some tests failed; see details above. 1280 | 1281 | 1282 | 1283 | 1284 | 1285 | 1286 | 1287 | 1288 | Must select some files in the IDE or set test.includes 1289 | 1290 | 1291 | 1292 | Some tests failed; see details above. 1293 | 1294 | 1295 | 1296 | Must select some files in the IDE or set test.class 1297 | Must select some method in the IDE or set test.method 1298 | 1299 | 1300 | 1301 | Some tests failed; see details above. 1302 | 1303 | 1304 | 1309 | 1310 | Must select one file in the IDE or set test.class 1311 | 1312 | 1313 | 1314 | Must select one file in the IDE or set test.class 1315 | Must select some method in the IDE or set test.method 1316 | 1317 | 1318 | 1319 | 1320 | 1321 | 1322 | 1323 | 1324 | 1325 | 1326 | 1327 | 1332 | 1333 | Must select one file in the IDE or set applet.url 1334 | 1335 | 1336 | 1337 | 1338 | 1339 | 1340 | 1345 | 1346 | Must select one file in the IDE or set applet.url 1347 | 1348 | 1349 | 1350 | 1351 | 1352 | 1353 | 1354 | 1359 | 1360 | 1361 | 1362 | 1363 | 1364 | 1365 | 1366 | 1367 | 1368 | 1369 | 1370 | 1371 | 1372 | 1373 | 1374 | 1375 | 1376 | 1377 | 1378 | 1379 | 1380 | 1381 | 1382 | 1383 | 1384 | 1385 | 1386 | 1387 | 1388 | 1389 | 1390 | 1391 | 1392 | 1393 | 1394 | 1395 | 1396 | 1397 | 1398 | 1399 | 1400 | 1401 | 1402 | 1403 | 1404 | -------------------------------------------------------------------------------- /nbproject/genfiles.properties: -------------------------------------------------------------------------------- 1 | build.xml.data.CRC32=fe35b956 2 | build.xml.script.CRC32=cfe917bf 3 | build.xml.stylesheet.CRC32=8064a381@1.80.1.48 4 | # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. 5 | # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. 6 | nbproject/build-impl.xml.data.CRC32=fe35b956 7 | nbproject/build-impl.xml.script.CRC32=7fbc6b26 8 | nbproject/build-impl.xml.stylesheet.CRC32=830a3534@1.80.1.48 9 | -------------------------------------------------------------------------------- /nbproject/private/config.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/nbproject/private/config.properties -------------------------------------------------------------------------------- /nbproject/private/private.properties: -------------------------------------------------------------------------------- 1 | compile.on.save=false 2 | do.depend=false 3 | do.jar=true 4 | javac.debug=true 5 | javadoc.preview=true 6 | user.properties.file=/Users/xavier/Library/Application Support/NetBeans/8.2/build.properties 7 | -------------------------------------------------------------------------------- /nbproject/private/private.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | file:/Users/xavier/NetBeansProjects/TwitterVis/src/twittervis/Greetings.java 7 | file:/Users/xavier/NetBeansProjects/TwitterVis/src/twittervis/TwitterVis.java 8 | file:/Users/xavier/NetBeansProjects/TwitterVis/src/twittervis/GetEmotion.java 9 | file:/Users/xavier/NetBeansProjects/TwitterVis/src/twittervis/stylesheet.css 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /nbproject/private/profiler/settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | #org.netbeans.modules.profiler.v2.features.MethodsFeature@ 6 | 7 | -------------------------------------------------------------------------------- /nbproject/project.properties: -------------------------------------------------------------------------------- 1 | annotation.processing.enabled=true 2 | annotation.processing.enabled.in.editor=false 3 | annotation.processing.processors.list= 4 | annotation.processing.run.all.processors=true 5 | annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output 6 | application.homepage=www.xavierwu.com 7 | application.title=Twitter Data Visualization Tool 8 | application.vendor=Xavier Wu 9 | auxiliary.org-netbeans-spi-editor-hints-projects.perProjectHintSettingsFile=nbproject/cfg_hints.xml 10 | build.classes.dir=${build.dir}/classes 11 | build.classes.excludes=**/*.java,**/*.form 12 | # This directory is removed when the project is cleaned: 13 | build.dir=build 14 | build.generated.dir=${build.dir}/generated 15 | build.generated.sources.dir=${build.dir}/generated-sources 16 | # Only compile against the classpath explicitly listed here: 17 | build.sysclasspath=ignore 18 | build.test.classes.dir=${build.dir}/test/classes 19 | build.test.results.dir=${build.dir}/test/results 20 | # Uncomment to specify the preferred debugger connection transport: 21 | #debug.transport=dt_socket 22 | debug.classpath=\ 23 | ${run.classpath} 24 | debug.test.classpath=\ 25 | ${run.test.classpath} 26 | # Files in build.classes.dir which should be excluded from distribution jar 27 | dist.archive.excludes= 28 | # This directory is removed when the project is cleaned: 29 | dist.dir=dist 30 | dist.jar=${dist.dir}/TwitterVis.jar 31 | dist.javadoc.dir=${dist.dir}/javadoc 32 | endorsed.classpath= 33 | excludes= 34 | file.reference.gs-algo-1.3.jar=lib/gs-algo-1.3/gs-algo-1.3.jar 35 | file.reference.gs-core-1.3.jar=lib/gs-core-1.3/gs-core-1.3.jar 36 | file.reference.gs-ui-1.3.jar=lib/gs-ui-1.3/gs-ui-1.3.jar 37 | file.reference.java-sdk-3.5.1-jar-with-dependencies.jar=lib/java-sdk-3.5.1-jar-with-dependencies.jar 38 | file.reference.json.jar=lib/json.jar 39 | file.reference.twitter4j-core.jar=lib/twitter4j/twitter4j-core.jar 40 | includes=** 41 | jar.archive.disabled=${jnlp.enabled} 42 | jar.compress=false 43 | jar.index=${jnlp.enabled} 44 | javac.classpath=\ 45 | ${file.reference.gs-core-1.3.jar}:\ 46 | ${file.reference.gs-algo-1.3.jar}:\ 47 | ${file.reference.gs-ui-1.3.jar}:\ 48 | ${file.reference.twitter4j-core.jar}:\ 49 | ${file.reference.java-sdk-3.5.1-jar-with-dependencies.jar}:\ 50 | ${file.reference.json.jar} 51 | # Space-separated list of extra javac options 52 | javac.compilerargs= 53 | javac.deprecation=false 54 | javac.external.vm=true 55 | javac.processorpath=\ 56 | ${javac.classpath} 57 | javac.source=1.8 58 | javac.target=1.8 59 | javac.test.classpath=\ 60 | ${javac.classpath}:\ 61 | ${build.classes.dir} 62 | javac.test.processorpath=\ 63 | ${javac.test.classpath} 64 | javadoc.additionalparam= 65 | javadoc.author=false 66 | javadoc.encoding=${source.encoding} 67 | javadoc.noindex=false 68 | javadoc.nonavbar=false 69 | javadoc.notree=false 70 | javadoc.private=false 71 | javadoc.reference.gs-algo-1.3.jar=lib/gs-algo-1.3/gs-algo-1.3-javadoc.jar 72 | javadoc.reference.gs-core-1.3.jar=lib/gs-core-1.3/gs-core-1.3-javadoc.jar 73 | javadoc.reference.gs-ui-1.3.jar=lib/gs-ui-1.3/gs-ui-1.3-javadoc.jar 74 | javadoc.splitindex=true 75 | javadoc.use=true 76 | javadoc.version=false 77 | javadoc.windowtitle= 78 | jnlp.codebase.type=no.codebase 79 | jnlp.descriptor=application 80 | jnlp.enabled=false 81 | jnlp.mixed.code=default 82 | jnlp.offline-allowed=false 83 | jnlp.signed=false 84 | jnlp.signing= 85 | jnlp.signing.alias= 86 | jnlp.signing.keystore= 87 | main.class=twittervis.TwitterVis 88 | # Optional override of default Application-Library-Allowable-Codebase attribute identifying the locations where your signed RIA is expected to be found. 89 | manifest.custom.application.library.allowable.codebase= 90 | # Optional override of default Caller-Allowable-Codebase attribute identifying the domains from which JavaScript code can make calls to your RIA without security prompts. 91 | manifest.custom.caller.allowable.codebase= 92 | # Optional override of default Codebase manifest attribute, use to prevent RIAs from being repurposed 93 | manifest.custom.codebase= 94 | # Optional override of default Permissions manifest attribute (supported values: sandbox, all-permissions) 95 | manifest.custom.permissions= 96 | manifest.file=manifest.mf 97 | meta.inf.dir=${src.dir}/META-INF 98 | mkdist.disabled=false 99 | platform.active=default_platform 100 | project.license=gpl30 101 | run.classpath=\ 102 | ${javac.classpath}:\ 103 | ${build.classes.dir} 104 | # Space-separated list of JVM arguments used when running the project. 105 | # You may also define separate properties like run-sys-prop.name=value instead of -Dname=value. 106 | # To set system properties for unit tests define test-sys-prop.name=value: 107 | run.jvmargs= 108 | run.test.classpath=\ 109 | ${javac.test.classpath}:\ 110 | ${build.test.classes.dir} 111 | source.encoding=UTF-8 112 | source.reference.gs-algo-1.3.jar=lib/gs-algo-1.3/gs-algo-1.3-sources.jar 113 | source.reference.gs-core-1.3.jar=lib/gs-core-1.3/gs-core-1.3-sources.jar 114 | source.reference.gs-ui-1.3.jar=lib/gs-ui-1.3/gs-ui-1.3-sources.jar 115 | src.dir=src 116 | -------------------------------------------------------------------------------- /nbproject/project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.netbeans.modules.java.j2seproject 4 | 5 | 6 | TwitterVis 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/twittervis/GetEmotion.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GPL 3.0 License 3 | * This software is offered AS-IS. The author does not take any responsibilities of 4 | * any misuse of this package. 5 | */ 6 | package twittervis; 7 | 8 | import com.ibm.watson.developer_cloud.alchemy.v1.AlchemyLanguage; 9 | import com.ibm.watson.developer_cloud.alchemy.v1.model.DocumentEmotion; 10 | import com.ibm.watson.developer_cloud.service.exception.BadRequestException; 11 | import java.util.Collections; 12 | import java.util.HashMap; 13 | import java.util.Map; 14 | import org.json.JSONObject; 15 | 16 | /** 17 | * Get the emotion of a String text 18 | * @author Xavier Wu 19 | */ 20 | public class GetEmotion { 21 | 22 | public static double joyValue; 23 | public static double angerValue; 24 | public static double fearValue; 25 | public static double disgustValue; 26 | public static double sadnessValue; 27 | public static String finalEmotion; 28 | public static String finalE; 29 | 30 | /** 31 | * Get emotions. 32 | * 33 | * @param tweetText 34 | */ 35 | public GetEmotion(String tweetText) { 36 | AlchemyLanguage service = new AlchemyLanguage(); 37 | 38 | // the following API key is not valid. Get yours for free 39 | // at IBM Bluemix Developer site 40 | // Create a new AlchemyLanguage App and copy the API and replace it to the 41 | // following key 42 | service.setApiKey("e8bc2sdhfgsd6553279[INVALID API KEY!!]e35d891a082e7"); 43 | Map params = new HashMap<>(); 44 | params.put(AlchemyLanguage.TEXT, tweetText); 45 | 46 | try { 47 | DocumentEmotion emotion = service.getEmotion(params).execute(); 48 | JSONObject obj = new JSONObject(emotion); 49 | 50 | joyValue = obj.getJSONObject("emotion").getDouble("joy"); 51 | angerValue = obj.getJSONObject("emotion").getDouble("anger"); 52 | fearValue = obj.getJSONObject("emotion").getDouble("fear"); 53 | sadnessValue = obj.getJSONObject("emotion").getDouble("sadness"); 54 | disgustValue = obj.getJSONObject("emotion").getDouble("disgust"); 55 | System.out.println("joy: " + joyValue + ", anger: " + angerValue 56 | + ", Sad: " + sadnessValue + ", Disgust: " 57 | + disgustValue + ", fear: " + fearValue + "."); 58 | finalE = getFinalEmotion(joyValue, angerValue, fearValue, sadnessValue, disgustValue); 59 | } catch (BadRequestException | NullPointerException e) { 60 | System.out.println("Error, Skipped."); 61 | } 62 | 63 | } 64 | 65 | public static void main(String args[]) { 66 | 67 | } 68 | 69 | /** 70 | * Find the emotion with the largest relevance value using a created HashMap 71 | * 72 | * @param e1 73 | * @param e2 74 | * @param e3 75 | * @param e4 76 | * @param e5 77 | * @return Final Emotion 78 | */ 79 | public static String getFinalEmotion(double e1, double e2, double e3, 80 | double e4, double e5) { 81 | // Create a map that stores the keys and values of the emotion 82 | // analysis results 83 | HashMap map = new HashMap<>(); 84 | map.put("Joy", e1); 85 | map.put("Anger", e2); 86 | map.put("Fear", e3); 87 | map.put("Sadness", e4); 88 | map.put("Disgust", e5); 89 | 90 | Map.Entry maxEntry = null; 91 | 92 | // Now look for the variable with the maximum in the created HashMap 93 | double maxValueInMap = (Collections.max(map.values())); // This will return max value in the Hashmap 94 | map.entrySet().stream().filter((entry) -> (entry.getValue() == maxValueInMap)).forEachOrdered((entry) -> { 95 | // System.out.println(entry.getKey()); // Print the key with max value 96 | finalEmotion = (String) entry.getKey(); 97 | }); // Itrate through HashMap to find the max 98 | return finalEmotion; // this the emotion with the largest relevance value 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /src/twittervis/Greetings.java: -------------------------------------------------------------------------------- 1 | package twittervis; 2 | 3 | // This class is not working. 4 | // It only shows a simple GUI for inputs. 5 | // Use TwitterVis class directly. 6 | 7 | import javax.swing.*; // Needed for Swing classes 8 | import java.awt.event.*; // Needed for ActionListener Interface 9 | 10 | /** 11 | * 12 | * @author Xavier 13 | */ 14 | /** 15 | * The Greetings class displays a JFrame that lets the user enter a distance in 16 | * kilometers. When the Submit button is clicked, a dialog box is displayed 17 | * and the input values are stored. 18 | */ 19 | public class Greetings extends JFrame { 20 | 21 | private JPanel panel; // To reference a panel 22 | private JLabel messageLabelA; // To reference a label 23 | private JLabel messageLabelB; 24 | private JTextField topicA; // To reference a text field 25 | private JTextField topicB; 26 | private JButton submitButton; 27 | private final int WINDOW_WIDTH = 650; // Window width 28 | private final int WINDOW_HEIGHT = 220; // Window height 29 | public static String inputA; 30 | public static String inputB; 31 | 32 | /** 33 | * Constructor 34 | * Make a new UI panel 35 | */ 36 | public Greetings() { 37 | // Set the window title. 38 | setTitle("What's on your mind?"); 39 | 40 | // Set the size of the window. 41 | setSize(WINDOW_WIDTH, WINDOW_HEIGHT); 42 | 43 | // Specify what happens when the close button is clicked. 44 | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 45 | 46 | // Build the panel and add it to the frame. 47 | buildPanel(); 48 | 49 | // Add the panel to the frame's content pane. 50 | add(panel); 51 | 52 | // Display the window. 53 | setVisible(true); 54 | } 55 | 56 | /** 57 | * The buildPanel method adds a label, text field, and and a submit 58 | * button to a panel. 59 | */ 60 | private void buildPanel() { 61 | 62 | JLabel introduction = new JLabel("

Plexus

"+ 63 | "

Emotion Viz from Twitter

" 64 | + "

What's on your mind? Type two related topics that you are most interested in.
"); 65 | 66 | // Create a label to display instructions. 67 | messageLabelA = new JLabel("Enter Topic A"); 68 | 69 | // Create a text field 10 characters wide. 70 | topicA = new JTextField(10); 71 | 72 | messageLabelB = new JLabel("Topic B"); 73 | topicB = new JTextField(10); 74 | 75 | // Create a button with the caption "Calculate". 76 | submitButton = new JButton("Submit"); 77 | 78 | // Add an action listener to the button. 79 | submitButton.addActionListener(new ButtonListener()); 80 | 81 | // Create a JPanel object and let the panel 82 | // field reference it. 83 | panel = new JPanel(); 84 | 85 | // Add the label, text field, and button 86 | // components to the panel. 87 | panel.add(introduction); 88 | panel.add(messageLabelA); 89 | panel.add(topicA); 90 | panel.add(messageLabelB); 91 | panel.add(topicB); 92 | panel.add(submitButton); 93 | 94 | } 95 | 96 | class ButtonListener implements ActionListener { 97 | 98 | //String inputA; 99 | // String inputB; // To hold the user's input 100 | 101 | /** 102 | * The actionPerformed method executes when the user clicks on the 103 | * Submit button. 104 | * 105 | * @param e The event object. 106 | */ 107 | @Override 108 | public void actionPerformed(ActionEvent e) { 109 | 110 | // Get the text entered by the user into the 111 | // text field. 112 | inputA = topicA.getText(); 113 | inputB = topicB.getText(); 114 | JOptionPane.showMessageDialog(null, "Thanks."); 115 | 116 | 117 | // For debugging, display a message indicating 118 | // the application is ready for more input. 119 | 120 | System.out.println("Ready for the next input"); 121 | 122 | } 123 | 124 | 125 | public String getInputA() { 126 | return inputA; 127 | } 128 | 129 | public String getInputB() { 130 | return inputB; 131 | } 132 | 133 | 134 | } // End of SubmitButtonListener class 135 | /** 136 | * The main method creates an instance of the KiloConverterWindow class, 137 | * which displays its window on the screen. 138 | * 139 | * @param args 140 | */ 141 | public static void main(String[] args) { 142 | Greetings greetings = new Greetings(); 143 | } 144 | } 145 | -------------------------------------------------------------------------------- /src/twittervis/TwitterDevApiKey.java: -------------------------------------------------------------------------------- 1 | package twittervis; 2 | 3 | /* 4 | * GPL 3.0 License 5 | */ 6 | 7 | /** 8 | * 9 | * @author Xavier Wu 10 | */ 11 | public interface TwitterDevApiKey { 12 | 13 | // The following credentials are NOT Valid. You need to get your own 14 | // API tokens from Twitter Developer Center 15 | // Go there and create an app on Twitter Dev. Copy and paste your 16 | // keys to the following four blocks. 17 | String KEY = "i0Rb2hdsj343Gv3k3k9UJGbSDPBjs"; 18 | String SECRET = "QGcVkysdhfy7y7y2FZjndkukth7LYpHrWUmBkjpfsdfdsfKZwYqz"; 19 | String TOKEN = "1859284573-U4XMRERD1Kfmt3icsLPHby7sfdy78yDSYGFcws3t"; 20 | String TOKENSECRET = "9LiY0qwkFW5vHVDSHGF7Y7Y33AiKK9kfi0EXl9iuFL9"; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/twittervis/TwitterVis.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GPL 3.0 License 3 | */ 4 | 5 | package twittervis; 6 | 7 | import java.util.Iterator; 8 | import org.graphstream.graph.*; 9 | import org.graphstream.graph.implementations.*; 10 | import twitter4j.Query; 11 | import twitter4j.QueryResult; 12 | import twitter4j.Twitter; 13 | import twitter4j.TwitterException; 14 | import twitter4j.TwitterFactory; 15 | import twitter4j.conf.ConfigurationBuilder; 16 | import static twittervis.TwitterDevApiKey.KEY; 17 | import static twittervis.TwitterDevApiKey.SECRET; 18 | import static twittervis.TwitterDevApiKey.TOKEN; 19 | import static twittervis.TwitterDevApiKey.TOKENSECRET; 20 | 21 | public class TwitterVis { 22 | 23 | public static String keyword1; 24 | public static String keyword2; 25 | public ConfigurationBuilder cb; 26 | private final Graph graph; 27 | TwitterFactory tf; 28 | private String JoyNode; 29 | private String SadnessNode; 30 | private String AngerNode; 31 | private String DisgustNode; 32 | private String FearNode; 33 | 34 | public static void main(String args[]) { 35 | 36 | // The following two keywords will be taken as Search Keywords 37 | // They correspond to Topic A and Topic B 38 | keyword1 = "Trump"; 39 | keyword2 = "Hilary"; 40 | System.setProperty("org.graphstream.ui.renderer", "org.graphstream.ui.j2dviewer.J2DGraphRenderer"); 41 | // Creating a new twitterVis instance 42 | TwitterVis twitterVis = new TwitterVis(); 43 | } 44 | 45 | // Inititate an instance for twitter Search instance 46 | public void initiate() { 47 | cb = new ConfigurationBuilder(); 48 | cb.setDebugEnabled(true) 49 | .setOAuthConsumerKey(KEY) 50 | .setOAuthConsumerSecret(SECRET) 51 | .setOAuthAccessToken(TOKEN) 52 | .setOAuthAccessTokenSecret(TOKENSECRET); 53 | tf = new TwitterFactory(cb.build()); 54 | 55 | // Retrieve tweets for two topics using keyword1 and keyword2 56 | // the "true" and "false" values represent the binary status of two topics. 57 | // true = the 1st topic, and false = the 2nd topic 58 | retrieveTweets(keyword1, true); 59 | retrieveTweets(keyword2, false); 60 | } 61 | 62 | 63 | public void retrieveTweets(String keyword, boolean topic) { 64 | 65 | 66 | Twitter twitter = tf.getInstance(); 67 | Query query = new Query(keyword); 68 | // The query parameter ("keyword") can be modified to make more 69 | // specific search queries based on language, users, time, etc. 70 | //Query query = new Query(keyword +" AND lang:en AND until:2016-12-01"); 71 | 72 | //number of tweets needed for each topic. 73 | query.count(240); 74 | 75 | // Assign the tweets to the corresponding Emotion Node 76 | if (topic == true) { 77 | JoyNode = "Joy1"; 78 | SadnessNode = "Sadness1"; 79 | AngerNode = "Anger1"; 80 | DisgustNode = "Disgust1"; 81 | FearNode = "xFear1"; 82 | } else { 83 | JoyNode = "Joy2"; 84 | SadnessNode = "Sadness2"; 85 | AngerNode = "Anger2"; 86 | DisgustNode = "Disgust2"; 87 | FearNode = "xFear2"; 88 | } 89 | 90 | //Try making the query request. 91 | try { 92 | QueryResult result = twitter.search(query); 93 | 94 | // Process the analysis results and create new edges and nodes accordingly 95 | result.getTweets().forEach((status) -> { 96 | status.getText(); //get the textual info from a tweet 97 | // String userName = status.getUser().getScreenName(); 98 | String TwtText = status.getText(); 99 | System.out.println("@" + status.getUser().getScreenName() + ":" + status.getText()); 100 | String twtEmotion = getTweetEmotion(TwtText); 101 | 102 | // A switch to assign the tweet to the correct node 103 | switch (twtEmotion) { 104 | case "Joy": 105 | System.out.println("Joy (*^__^*)"); 106 | graph.addEdge(TwtText, JoyNode, TwtText); 107 | break; 108 | case "Sadness": 109 | System.out.println("Sad  (*T_T*) "); 110 | graph.addEdge(TwtText, SadnessNode, TwtText); 111 | break; 112 | case "Anger": 113 | System.out.println("Anger ヽ(`Д´)ノ"); 114 | graph.addEdge(TwtText, AngerNode, TwtText); 115 | break; 116 | case "Fear": 117 | System.out.println("Fear ⊙﹏⊙|||"); 118 | graph.addEdge(TwtText, FearNode, TwtText); 119 | break; 120 | case "Disgust": 121 | System.out.println("Disgust (*⊙~⊙)"); 122 | graph.addEdge(TwtText, DisgustNode, TwtText); 123 | break; 124 | } 125 | }); 126 | 127 | } catch (TwitterException ex) { //fallback if exceptions occur 128 | System.out.println("Couldn't connect: " + ex); 129 | } 130 | } 131 | 132 | /** 133 | * Get the overall emotion of a single tweet 134 | * @param tweet 135 | * @return the final emotion of a single tweet 136 | */ 137 | public String getTweetEmotion(String tweet) { 138 | GetEmotion newEmj = new GetEmotion(tweet); 139 | System.out.println("Final Emotion is: "); 140 | //System.out.println(GetEmotion.finalE); 141 | String twtEmotion = GetEmotion.finalE; 142 | return twtEmotion; 143 | } 144 | 145 | // Start the visualiztion part 146 | public TwitterVis() { 147 | graph = new SingleGraph("Twitter Visualization"); 148 | 149 | System.setProperty("http.agent", "Chrome"); 150 | graph.addAttribute("ui.stylesheet", "url('https://raw.githubusercontent.com/xavierwu2016/plexus/master/src/twittervis/stylesheet.css')"); 151 | // the stylesheet can also be local, shown as below 152 | // graph.addAttribute("ui.stylesheet", "url('file:///Users/Xavier/NetBeansProjects/TwitterVis/src/twittervis/stylesheet.css')"); 153 | graph.setAutoCreate(true); 154 | graph.setStrict(false); 155 | graph.display(); 156 | 157 | // The topics here determine what to display in the graph 158 | // If you change the words below, you have to change them 159 | // in the stylesheet as well. tHE stylesheet is written in css 160 | // and thus the variables names cannot be altered here. 161 | // You need to change them manually. 162 | String topicA = "Trump"; 163 | String topicB = "Hilary"; 164 | 165 | // Create new edges 166 | // The following 10 "addEdge" commands will build the structure 167 | // of the visualization 168 | graph.addEdge("joy1", topicA, "Joy1"); 169 | graph.addEdge("sadness1", topicA, "Sadness1"); 170 | graph.addEdge("anger1", topicA, "Anger1"); 171 | // There is an "x" before Fear1 because of a bug in Java AWT 172 | // The node name cannot start with or contain "fea" otherwise 173 | // it will be read as a color element, like #ffeeaa 174 | graph.addEdge("xfear1", topicA, "xFear1"); 175 | graph.addEdge("disgust1", topicA, "Disgust1"); 176 | 177 | graph.addEdge("joy2", topicB, "Joy2"); 178 | graph.addEdge("sadness2", topicB, "Sadness2"); 179 | graph.addEdge("anger2", topicB, "Anger2"); 180 | graph.addEdge("xfear2", topicB, "xFear2"); 181 | graph.addEdge("disgust2", topicB, "Disgust2"); 182 | 183 | Node n = graph.getNode(topicA); 184 | 185 | // Label all the nodes 186 | for (Node node : graph) { 187 | node.addAttribute("ui.label", node.getId()); 188 | } 189 | 190 | initiate(); 191 | 192 | // Label the nodes for tweets again. 193 | for (Node node : graph) { 194 | node.addAttribute("ui.label", node.getId()); 195 | } 196 | 197 | } 198 | 199 | // apply the styles based on the ui class 200 | public void explore(Node source) { 201 | Iterator k = source.getBreadthFirstIterator(); 202 | 203 | while (k.hasNext()) { 204 | Node next = k.next(); 205 | next.setAttribute("ui.class", "marked"); 206 | 207 | sleep(); 208 | } 209 | } 210 | 211 | protected void sleep() { 212 | try { 213 | Thread.sleep(10); 214 | } catch (InterruptedException e) { 215 | } 216 | } 217 | } 218 | -------------------------------------------------------------------------------- /src/twittervis/stylesheet.css: -------------------------------------------------------------------------------- 1 | /* This stylesheet defines the styles of all elements in the graph */ 2 | /* Author: Xavier Wu*/ 3 | 4 | graph { 5 | fill-color: #e6e6e6; 6 | padding: 10px; 7 | 8 | } 9 | 10 | node { fill-color: #E59D77; 11 | size: 12px,12px; 12 | text-visibility-mode: hidden; 13 | } 14 | 15 | node#Trump { size: 55px; 16 | text-size: 13; 17 | text-style: bold; 18 | text-alignment: center; 19 | shape: rounded-box; 20 | fill-color: #95C2DC; 21 | text-visibility-mode: normal; 22 | } 23 | 24 | node#Hilary { size: 55px; 25 | text-size: 13; 26 | text-style: bold; 27 | text-alignment: center; 28 | shape: rounded-box; 29 | fill-color: #79C7CC; 30 | text-visibility-mode: normal; 31 | } 32 | 33 | node#Joy1 { size: 33px; 34 | stroke-width: 6px; 35 | text-alignment: under; 36 | /* fill-color: #FF8B2B; */ 37 | fill-mode: image-scaled; 38 | fill-image: url('https://raw.githubusercontent.com/xavierwu2016/plexus/master/style/joy.png'); 39 | } 40 | 41 | node#Joy2 { size: 35px; 42 | stroke-width: 6px; 43 | text-alignment: under; 44 | fill-mode: image-scaled; 45 | fill-image: url('https://raw.githubusercontent.com/xavierwu2016/plexus/master/style/joy.png'); 46 | } 47 | 48 | node#Sadness1 { size: 35px; 49 | stroke-width: 6px; 50 | text-alignment: under; 51 | fill-color: #8EA9C4; 52 | fill-mode: image-scaled; 53 | fill-image: url('https://raw.githubusercontent.com/xavierwu2016/plexus/master/style/sad.png'); 54 | } 55 | 56 | node#Sadness2 { size: 35px; 57 | stroke-width: 6px; 58 | text-alignment: under; 59 | fill-color: #8EA9C4; 60 | fill-mode: image-scaled; 61 | fill-image: url('https://raw.githubusercontent.com/xavierwu2016/plexus/master/style/sad.png'); 62 | } 63 | 64 | node#Anger1 { size: 35px; 65 | stroke-width: 6px; 66 | text-alignment: under; 67 | fill-color: #DC0530; 68 | fill-mode: image-scaled; 69 | fill-image: url('https://raw.githubusercontent.com/xavierwu2016/plexus/master/style/anger.png'); 70 | } 71 | 72 | node#Anger2 { size: 35px; 73 | stroke-width: 6px; 74 | text-alignment: under; 75 | fill-color: #DC0530; 76 | fill-mode: image-scaled; 77 | fill-image: url('https://raw.githubusercontent.com/xavierwu2016/plexus/master/style/anger.png'); 78 | } 79 | 80 | node#Disgust1 { size: 35px; 81 | stroke-width: 6px; 82 | text-alignment: under; 83 | fill-color: #D3C314; 84 | fill-mode: image-scaled; 85 | fill-image: url('https://raw.githubusercontent.com/xavierwu2016/plexus/master/style/disgust.png'); 86 | } 87 | 88 | node#Disgust2 { size: 35px; 89 | stroke-width: 6px; 90 | text-alignment: under; 91 | fill-color: #D3C314; 92 | fill-mode: image-scaled; 93 | fill-image: url('https://raw.githubusercontent.com/xavierwu2016/plexus/master/style/disgust.png'); 94 | } 95 | 96 | node#xFear1{ size: 35px; 97 | stroke-width: 6px; 98 | text-alignment: under; 99 | fill-color: #9B84F8; 100 | fill-mode: image-scaled; 101 | fill-image: url('https://raw.githubusercontent.com/xavierwu2016/plexus/master/style/fear.png'); 102 | 103 | } 104 | node#xFear2 { size: 35px; 105 | stroke-width: 6px; 106 | text-alignment: under; 107 | fill-color: #9B84F8; 108 | fill-mode: image-scaled; 109 | fill-image: url('https://raw.githubusercontent.com/xavierwu2016/plexus/master/style/fear.png'); 110 | } 111 | 112 | node:clicked { 113 | text-visibility-mode: normal; 114 | text-size: 15; 115 | fill-color: red; 116 | text-alignment: under; 117 | } 118 | 119 | edge { size: 0.5px; fill-color:#a6a6a6;} 120 | edge#joy1 { shape: blob; size: 1px; fill-color:#a6a6a6;} 121 | edge#joy2 { shape: blob; size: 1px; fill-color:#a6a6a6;} 122 | edge#sadness1 { shape: blob; size: 1px; fill-color:#a6a6a6;} 123 | edge#sadness2 { shape: blob; size: 1px; fill-color:#a6a6a6;} 124 | edge#anger1 { shape: blob; size: 1px; fill-color:#a6a6a6;} 125 | edge#anger2 { shape: blob; size: 1px; fill-color:#a6a6a6;} 126 | edge#disgust1 { shape: blob; size: 1px; fill-color:#a6a6a6;} 127 | edge#disgust2 { shape: blob; size: 1px; fill-color:#a6a6a6;} 128 | edge#xfear1 { shape: blob; size: 1px; fill-color:#a6a6a6;} 129 | edge#xfear2{ shape: blob; size: 1px; fill-color:#a6a6a6;} -------------------------------------------------------------------------------- /style/ImagesFromPublication/emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/style/ImagesFromPublication/emoji.png -------------------------------------------------------------------------------- /style/ImagesFromPublication/hilaryVStrump-timeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/style/ImagesFromPublication/hilaryVStrump-timeline.png -------------------------------------------------------------------------------- /style/ImagesFromPublication/hilaryVStrump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/style/ImagesFromPublication/hilaryVStrump.png -------------------------------------------------------------------------------- /style/ImagesFromPublication/iphoneVSsamsung.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/style/ImagesFromPublication/iphoneVSsamsung.png -------------------------------------------------------------------------------- /style/ImagesFromPublication/ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/style/ImagesFromPublication/ui.png -------------------------------------------------------------------------------- /style/ImagesFromPublication/vanVSla.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/style/ImagesFromPublication/vanVSla.png -------------------------------------------------------------------------------- /style/anger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/style/anger.png -------------------------------------------------------------------------------- /style/disgust.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/style/disgust.png -------------------------------------------------------------------------------- /style/fear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/style/fear.png -------------------------------------------------------------------------------- /style/joy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/style/joy.png -------------------------------------------------------------------------------- /style/sad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xavierwu2016/plexus/a1a237125de5750d4a7557926505d01af81231c8/style/sad.png --------------------------------------------------------------------------------