diff --git a/gephi-plugins-master/README.md b/gephi-plugins-master/README.md new file mode 100644 index 0000000000..abdba38774 --- /dev/null +++ b/gephi-plugins-master/README.md @@ -0,0 +1,203 @@ +# Gephi Plugins + +This repository is an out-of-the-box development environment for Gephi plugins. Gephi plugins are implemented in Java and can extend [Gephi](https://gephi.org) in many different ways, adding or improving features. Getting started is easy with this repository but also checkout the [Bootcamp](https://github.com/gephi/gephi-plugins-bootcamp) for examples of plugins you can create. + +## Migrate Gephi 0.8 plugins + +The process in which plugins are developed and submitted had an overhaul when Gephi 0.9 was released. Details can be read on this article: [Plugin development gets new tools and opens-up to the community](https://gephi.wordpress.com/2015/12/16/plugin-development-gets-new-tools-and-opens-up-to-the-community/). + +This section is a step-by-step guide to migrate 0.8 plugins. Before going through the code and configuration, let's summerize the key differences between the two environements. + +- The 0.8 base is built using Ant, whereas the 0.9 uses Maven. These two are significantly different. If you aren't familiar with Maven, you can start with [Maven in 5 Minutes]( https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html). Maven configurations are defined in the `pom.xml` files. +- The 0.8 base finds the Gephi modules into the `platform` folder checked in the repository, whereas the 0.9 base downloads everything from the central Maven repository, where all Gephi modules are available. +- Maven requires to separate source files (e.g. .java) and resources files (e.g. .properties) into distinct folders. Sources are located in `src/main/java` and resources in `src/main/resources`. + +A custom `migrate` goal is available in the [Gephi Maven Plugin](https://github.com/gephi/gephi-maven-plugin) to facilitate the migration from 0.8 to 0.9. This automated process migrates ant-based plugins to maven and takes care of copying the configuration and code. Follow these steps to migrate your plugin: + +- Fork and checkout this repository: + + git clone git@github.com:username/gephi-plugins.git + +If you've already had a forked repository based on 0.8 we suggest to save your code somewhere, delete it and fork again as the history was cleared. + +- Copy your plugin folder at the root of this directory. + +- Run this command: + + mvn org.gephi:gephi-maven-plugin:migrate + +This command will detect the ant-based plugin and migrate it. The resulting folder is then located into the `modules` folder. + +The plugin code can then be inspected in Netbeans or built via command line with `mvn clean package`. + +## Get started + +### Requirements + +Developing Gephi plugins requires [JDK 7](http://www.oracle.com/technetwork/java/javase/downloads/index.html) or later and [Maven](http://maven.apache.org/). Although any IDE/Editor can be used, [Netbeans IDE](https://netbeans.org/) is recommend as Gephi itself is based on [Netbeans Platform](https://netbeans.org/features/platform/index.html). + +### Create a plugin + +The creation of a new plugin is simple thanks to our custom [Gephi Maven Plugin](https://github.com/gephi/gephi-maven-plugin). The `generate` goal asks a few questions and then configures everything for you. + +- Fork and checkout the latest version of this repository: + + git clone git@github.com:username/gephi-plugins.git +- Run the following command and answer the questions: + + mvn org.gephi:gephi-maven-plugin:generate + +This is an example of what this process will ask: + + Name of organization (e.g. my.company): org.foo + Name of artifact (e.g my-plugin): my-plugin + Version (e.g. 1.0.0): 1.0.0 + Directory name (e.g MyPlugin): MyPlugin + Branding name (e.g My Plugin): My Plugin + Category (e.g Layout, Filter, etc.): Layout + Author: My Name + Author email (optional): + Author URL (optional): + License (e.g Apache 2.0): Apache 2.0 + Short description (i.e. one sentence): Plugin catch-phrase + Long description (i.e multiple sentences): Plugin features are great + Would you like to add a README.md file (yes|no): yes + +The plugin configuration is created. Now you can (in any order): + +- Add some Java code in the `src/main/java` folder of your plugin +- Add some resources (e.g. Bundle.properties, images) into the `src/main/resources/` folder of your plugin +- Change the version, author or license information into the `pom.xml` file, which is in your plugin folder +- Edit the description or category details into the `src/main/nbm/manifest.mf` file in your plugin folder + +### Build a plugin + +Run the following command to compile and build your plugin: + + mvn clean package + +In addition of compiling and building the JAR and NBM, this command uses the `Gephi Maven Plugin` to verify the plugin's configuration. In care something is wrong it will fail and indicte the reason. + +### Run Gephi with plugin + +Run the following command to run Gephi with your plugin pre-installed. Make sure to run `mvn package` beforehand to rebuild. + + mvn org.gephi:gephi-maven-plugin:run + +In Gephi, when you navigate to `Tools` > `Plugins` you should see your plugin listed in `Installed`. + +## Submit a plugin + +Submitting a Gephi plugin for approval is a simple process based on GitHub's [pull request](https://help.github.com/articles/using-pull-requests/) mechanism. + +- First, make sure you're working on a fork of [gephi-plugins](https://github.com/gephi/gephi-plugins). You can check that by running `git remote -v` and look at the url, it should contain your GitHub username, for example `git@github.com:username/gephi-plugins.git`. + +- Add and commit your work. It's recommended to keep your fork synced with the upstream repository, as explained [here](https://help.github.com/articles/syncing-a-fork/), so you can run `git merge upstream/master` beforehand. + +- Push your commits to your fork with `git push origin master`. + +- Navigate to your fork's URL and create a pull request. Select `master-forge` instead of `master` as base branch. + +- Submit your pull request. + +## Update a plugin + +Updating a Gephi plugin has the same process as submiting it for the first time. Don't forget to merge from upstream's master branch. + +## IDE Support + +### Netbeans IDE + +- Start Netbeans and go to `File` and then `Open Project`. Navigate to your fork repository, Netbeans automatically recognizes it as Maven project. +- Each plugin module can be found in the `Modules` folder. + +To run Gephi with your plugin pre-installed, right click on the `gephi-plugins` project and select `Run`. + +To debug Gephi with your plugin, right click on the `gephi-plugins` project and select `Debug`. + +### IntelliJ IDEA + +- Start IntelliJ and `Open` the project by navigating to your fork repository. IntelliJ may prompt you to import the Maven project, select yes. + +To run Gephi with your plugin pre-installed when you click `Run`, create a `Maven` run configuration and enter `org.gephi:gephi-maven-plugin:run` in the command field. The working directory is simply the current project directory. + +To debug Gephi with your plugin, create a `Remote` configuration and switch the `Debugger mode` option to `Listen`. Then create a `Maven` run configuration like abobe but add `-Drun.params.debug="-J-Xdebug -J-Xnoagent -J-Xrunjdwp:transport=dt_socket,suspend=n,server=n,address=5005"` into the `Runner` > `VM Options` field. Then, go to the `Run` menu and first run debug with the remote configuration and then only run debug with the Maven configuration. + +## FAQ + +#### What kind of plugins can I create? + +Gephi can be extended in many ways but the major categories are `Layout`, `Export`, `Import`, `Data Laboratory`, `Filter`, `Generator`, `Metric`, `Preview`, `Tool`, `Appearance` and `Clustering`. A good way to start is to look at examples with the [bootcamp](https://github.com/gephi/gephi-plugins-bootcamp). + +#### In which language can plugins be created? + +Plugins can use any JVM languages (e.g. Scala, Python, Groovy) but the default option is Java. + +#### Can native libraries be used? + +Yes, native libraries can be used in modules. + +#### How is this repository structured? + +The `modules` folder is where plugin modules go. Each plugin is defined in a single folder in this directory. A plugin can be composed of multiple modules (it's called a suite then) but usually one is enough to do what you want. + +The `pom.xml` file in `modules` is the parent pom for plugins. A Maven pom can inherit configurations from a parent and that is something we use to keep each plugin's pom very simple. Notice that each plugin's pom (i.e. the `pom.xml` file in the plugin folder) has a `` defined. + +The `pom.xml` file at the root folder makes everything fit together and notably lists the modules. + +#### How are the manifest settings defined? + +There are two options. The first option is what the `generate` task does: it puts entries `OpenIDE-Module-Short-Description`, `OpenIDE-Module-Long-Description`, `OpenIDE-Module-Display-Category` and `OpenIDE-Module-Name` into the `src/main/nbm/manifest.mf` file. The second option sets a `OpenIDE-Module-Localizing-Bundle` entry into the `manifest.mf` so values are defined elsewhere in `Bundle.properties` file. The value is then simply the path to the file (e.g. `OpenIDE-Module-Localizing-Bundle: org/project/Bundle.properties`). + +The second option is preferable when the short or long description have too many characters as the manifest format is pretty restrictive. + +#### How to add a new module? + +This applies for suite plugins with multiple modules. Besides creating the module folder, edit the `pom.xml` file and add the folder path to ``, like in this example: + +``` + + + + modules/ExampleModule + +``` + +#### Where are dependencies configured? + +Dependencies are configured in the `` section in the plugin folder's `pom.xml`. Each dependency has a `groupId`, an `artifactId` and a `version`. There are three types of dependencies a plugin can have: an external library, a Gephi module or a Netbeans module. + +The list of Gephi and Netbeans dependencies one can use can be found in the `modules/pom.xml` file. All possible dependencies are listed in the `` section. Because each plugin module inherits from this parent pom the version can be omitted when the dependency is set. For instance, this is how a plugin depends on `GraphAPI` and Netbeans's `Lookup`. + +``` + + + org.netbeans.api + org-openide-util-lookup + + + org.gephi + graph-api + + +``` + +#### What are public packages for? + +This applies for suite plugins with multiple modules. A module should declare the packages it wants to make accessible to other modules. For instance, if a module `B` depends on the class `my.org.project.ExampleController` defined in a module `A`, the `A` module should declare `my.org.project` as public package. + +Public packages are configured in the module's `pom.xml` file. Edit the `` entry. Example: + +``` + + my.org.project + +``` + +#### What is the difference between plugin and module? + +It's the same thing. We say module because Gephi is a modular application and is composed of many independent modules. Plugins also are modules but we call them plugin because they aren't in the _core_ Gephi. + +#### When running the plugin in Netbeans I get an error "Running standalone modules or suites requires..." + +This error appears when you try to run a module. To run Gephi with your plugin you need to run the `gephi-plugins` project, not your module. diff --git a/gephi-plugins-master/_gitignore b/gephi-plugins-master/_gitignore new file mode 100644 index 0000000000..153b49dd74 --- /dev/null +++ b/gephi-plugins-master/_gitignore @@ -0,0 +1,178 @@ +.DS_Store +**/target/** + +# Created by https://www.gitignore.io/api/maven,eclipse,netbeans,intellij +# Edit at https://www.gitignore.io/?templates=maven,eclipse,netbeans,intellij + +### Eclipse ### + +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +### Eclipse Patch ### +# Eclipse Core +.project + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# Annotation Processing +.apt_generated + +.sts4-cache/ + +### Intellij ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/modules.xml +# .idea/*.iml +# .idea/modules + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### Intellij Patch ### +# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 + +# *.iml +# modules.xml +# .idea/misc.xml +# *.ipr + +# Sonarlint plugin +.idea/sonarlint + +### Maven ### +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar + +### NetBeans ### +**/nbproject/private/ +**/nbproject/Makefile-*.mk +**/nbproject/Package-*.bash +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ + +# End of https://www.gitignore.io/api/maven,eclipse,netbeans,intellij diff --git a/gephi-plugins-master/modules/TwitterBrowserImporter/README.md b/gephi-plugins-master/modules/TwitterBrowserImporter/README.md new file mode 100644 index 0000000000..85ee3f91c9 --- /dev/null +++ b/gephi-plugins-master/modules/TwitterBrowserImporter/README.md @@ -0,0 +1,4 @@ +## TwitterBrowserImporter + +This README supports Markdown, see [syntax](https://help.github.com/articles/markdown-basics/) + diff --git a/gephi-plugins-master/modules/TwitterBrowserImporter/pom.xml b/gephi-plugins-master/modules/TwitterBrowserImporter/pom.xml new file mode 100644 index 0000000000..d35bf5d596 --- /dev/null +++ b/gephi-plugins-master/modules/TwitterBrowserImporter/pom.xml @@ -0,0 +1,122 @@ + + + 4.0.0 + + gephi-plugin-parent + org.gephi + 0.9.2 + + + team2slliure + twitterbrowserimporter + 1.0.0 + nbm + + TwitterBrowserImporter + + + + + org.netbeans.api + org-openide-windows + ${netbeans.version} + + + org.netbeans.api + org-openide-util + ${netbeans.version} + + + org.netbeans.api + org-openide-util-ui + ${netbeans.version} + + + org.netbeans.api + org-openide-util-lookup + ${netbeans.version} + + + org.netbeans.api + org-openide-awt + ${netbeans.version} + + + org.netbeans.api + org-netbeans-modules-settings + ${netbeans.version} + + + org.jdesktop + beansbinding + 1.2.1 + + + org.gephi + perspective-api + 0.9.2 + + + junit + junit + 4.12 + test + + + org.seleniumhq.selenium + selenium-java + 3.11.0 + + + com.google.guava + guava + 24.1-jre + + + + org.jsoup + jsoup + 1.11.3 + jar + + + + org.codehaus.jackson + jackson-mapper-asl + 1.9.13 + + + it.uniroma1.dis.wsngroup.gexf4j + gexf4j + 0.4.1-BETA-SNAPSHOT + jar + + + org.seleniumhq.selenium + selenium-api + 3.11.0 + jar + + + + + + + org.codehaus.mojo + nbm-maven-plugin + + Apache 2.0 + team2 + + + $sourcecode_url + + + + + + + + + + diff --git a/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/org/gephi/plugins/myplugin/Bundle.properties b/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/org/gephi/plugins/myplugin/Bundle.properties new file mode 100644 index 0000000000..acb88a659f --- /dev/null +++ b/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/org/gephi/plugins/myplugin/Bundle.properties @@ -0,0 +1,9 @@ +TwitterPluginTopComponent.button1.label=TwitterWebBrowserPlugin +TwitterPluginTopComponent.jButton1.text=jButton1 +TwitterPluginTopComponent.text.text=Enter URL +pluginTopComponent.text.text=Enter URL +pluginTopComponent.button1.label=TwitterWebBrowserPlugin +TwitterBrowserImporterTopComponent.jTextArea1.text=Enter URL +TwitterBrowserImporterTopComponent.button1.label=Likes +TwitterBrowserImporterTopComponent.button2.label=Retweets +TwitterBrowserImporterTopComponent.button3.label=Comments diff --git a/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/org/gephi/plugins/myplugin/TwitterBrowserImporterTopComponent.form b/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/org/gephi/plugins/myplugin/TwitterBrowserImporterTopComponent.form new file mode 100644 index 0000000000..3c37d67735 --- /dev/null +++ b/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/org/gephi/plugins/myplugin/TwitterBrowserImporterTopComponent.form @@ -0,0 +1,94 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/org/gephi/plugins/myplugin/TwitterBrowserImporterTopComponent.java b/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/org/gephi/plugins/myplugin/TwitterBrowserImporterTopComponent.java new file mode 100644 index 0000000000..af5fe27490 --- /dev/null +++ b/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/org/gephi/plugins/myplugin/TwitterBrowserImporterTopComponent.java @@ -0,0 +1,202 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.gephi.plugins.myplugin; + +import org.netbeans.api.settings.ConvertAsProperties; +import org.openide.awt.ActionID; +import org.openide.awt.ActionReference; +import org.openide.util.Exceptions; +import org.openide.windows.TopComponent; +import org.openide.util.NbBundle.Messages; + +import pack.pack.App; + +/** + * Top component which displays something. + */ +@ConvertAsProperties( + dtd = "-//org.gephi.plugins.myplugin//TwitterBrowserImporter//EN", + autostore = false +) +@TopComponent.Description( + preferredID = "TwitterBrowserImporterTopComponent", + //iconBase="SET/PATH/TO/ICON/HERE", + persistenceType = TopComponent.PERSISTENCE_ALWAYS +) +@TopComponent.Registration(mode = "explorer", openAtStartup = true) +@ActionID(category = "Window", id = "org.gephi.plugins.myplugin.TwitterBrowserImporterTopComponent") +@ActionReference(path = "Menu/Window" /*, position = 333 */) +@TopComponent.OpenActionRegistration( + displayName = "#CTL_TwitterBrowserImporterAction", + preferredID = "TwitterBrowserImporterTopComponent" +) +@Messages({ + "CTL_TwitterBrowserImporterAction=TwitterBrowserImporter", + "CTL_TwitterBrowserImporterTopComponent=TwitterBrowserImporter Window", + "HINT_TwitterBrowserImporterTopComponent=This is a TwitterBrowserImporter window" +}) +public final class TwitterBrowserImporterTopComponent extends TopComponent { + + public TwitterBrowserImporterTopComponent() { + initComponents(); + setName(Bundle.CTL_TwitterBrowserImporterTopComponent()); + setToolTipText(Bundle.HINT_TwitterBrowserImporterTopComponent()); + putClientProperty(TopComponent.PROP_MAXIMIZATION_DISABLED, Boolean.TRUE); + putClientProperty(TopComponent.PROP_UNDOCKING_DISABLED, Boolean.TRUE); + + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + jScrollPane1 = new javax.swing.JScrollPane(); + jTextArea1 = new javax.swing.JTextArea(); + button1 = new java.awt.Button(); + button2 = new java.awt.Button(); + button3 = new java.awt.Button(); + + jTextArea1.setColumns(20); + jTextArea1.setRows(5); + jTextArea1.setText(org.openide.util.NbBundle.getMessage(TwitterBrowserImporterTopComponent.class, "TwitterBrowserImporterTopComponent.jTextArea1.text")); // NOI18N + jScrollPane1.setViewportView(jTextArea1); + + button1.setLabel(org.openide.util.NbBundle.getMessage(TwitterBrowserImporterTopComponent.class, "TwitterBrowserImporterTopComponent.button1.label")); // NOI18N + button1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + button1ActionPerformed(evt); + } + }); + + button2.setLabel(org.openide.util.NbBundle.getMessage(TwitterBrowserImporterTopComponent.class, "TwitterBrowserImporterTopComponent.button2.label")); // NOI18N + button2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + button2ActionPerformed(evt); + } + }); + + button3.setLabel(org.openide.util.NbBundle.getMessage(TwitterBrowserImporterTopComponent.class, "TwitterBrowserImporterTopComponent.button3.label")); // NOI18N + button3.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + button3ActionPerformed(evt); + } + }); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane1) + .addGroup(layout.createSequentialGroup() + .addComponent(button1, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(button2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(button3, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 176, Short.MAX_VALUE)) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(button1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(button2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(button3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + ); + }// //GEN-END:initComponents + + private void button1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_button1ActionPerformed + // TODO add your handling code here: + //GET LIKES + + String s = jTextArea1.getText(); + + String[] s_vec = {s, "2"}; + + String s_fin = "Graph Saved At: "; + + try { + s_fin = s_fin + App.main(s_vec); + } catch (InterruptedException ex) { + Exceptions.printStackTrace(ex); + } + + jTextArea1.setText(s_fin); + }//GEN-LAST:event_button1ActionPerformed + + private void button3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_button3ActionPerformed + // TODO add your handling code here: + //GET COMMENTS + + String s = jTextArea1.getText(); + + String[] s_vec = {s, "1"}; + + String s_fin = "Graph Saved At: "; + + try { + s_fin = s_fin + App.main(s_vec); + } catch (InterruptedException ex) { + Exceptions.printStackTrace(ex); + } + + jTextArea1.setText(s_fin); + }//GEN-LAST:event_button3ActionPerformed + + private void button2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_button2ActionPerformed + // TODO add your handling code here: + //GET RETWEETS + + String s = jTextArea1.getText(); + + String[] s_vec = {s, "3"}; + + String s_fin = "Graph Saved At: "; + + try { + s_fin = s_fin + App.main(s_vec); + } catch (InterruptedException ex) { + Exceptions.printStackTrace(ex); + } + + jTextArea1.setText(s_fin); + }//GEN-LAST:event_button2ActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private java.awt.Button button1; + private java.awt.Button button2; + private java.awt.Button button3; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JTextArea jTextArea1; + // End of variables declaration//GEN-END:variables + @Override + public void componentOpened() { + // TODO add custom code on component opening + } + + @Override + public void componentClosed() { + // TODO add custom code on component closing + } + + void writeProperties(java.util.Properties p) { + // better to version settings since initial version as advocated at + // http://wiki.apidesign.org/wiki/PropertyFiles + p.setProperty("version", "1.0"); + // TODO store your settings + } + + void readProperties(java.util.Properties p) { + String version = p.getProperty("version"); + // TODO read your settings according to their version + } +} diff --git a/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/pack/pack/App.java b/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/pack/pack/App.java new file mode 100644 index 0000000000..48f193cd4e --- /dev/null +++ b/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/pack/pack/App.java @@ -0,0 +1,48 @@ +package pack.pack; + + + + +public class App +{ + + public static String main( String[] args ) throws InterruptedException + { + + String url = args[0]; + //"https://twitter.com/LVPibai/status/840355301043916800" + Parser parser = new Parser(url); + int type = Integer.parseInt(args[1]); + String label = ""; + parser.init(); + + if (type == 1) { //comments + label = "comments"; + parser.parseComments(); + + } else if (type == 2) { //likes + label = "likes"; + parser.parserLikes(); + + } else if (type == 3) { //retweets + label = "retweets"; + parser.parserRetweet(); + } + + //create the gephi graph + GraphCreator gCreator = new GraphCreator("graph", "home/u137554/Desktop/", label); + + for (String i : parser.DataBase.keySet()) { + gCreator.addVertex(parser.DataBase.get(i)); + } + + + gCreator.initGraph("OSS_finalProject", "Graph of twitter interactions"); + gCreator.createGraph(); + String path = gCreator.savefile(); + + parser.closeDriver(); + + return path; + } +} diff --git a/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/pack/pack/GraphCreator.java b/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/pack/pack/GraphCreator.java new file mode 100644 index 0000000000..33964fc68c --- /dev/null +++ b/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/pack/pack/GraphCreator.java @@ -0,0 +1,116 @@ +package pack.pack; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.Writer; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.HashMap; +import java.util.List; + + +import it.uniroma1.dis.wsngroup.gexf4j.core.EdgeType; +import it.uniroma1.dis.wsngroup.gexf4j.core.Gexf; +import it.uniroma1.dis.wsngroup.gexf4j.core.Graph; +import it.uniroma1.dis.wsngroup.gexf4j.core.Mode; +import it.uniroma1.dis.wsngroup.gexf4j.core.Node; +import it.uniroma1.dis.wsngroup.gexf4j.core.data.AttributeClass; +import it.uniroma1.dis.wsngroup.gexf4j.core.data.AttributeList; +import it.uniroma1.dis.wsngroup.gexf4j.core.impl.GexfImpl; +import it.uniroma1.dis.wsngroup.gexf4j.core.impl.StaxGraphWriter; +import it.uniroma1.dis.wsngroup.gexf4j.core.impl.data.AttributeListImpl; + +public class GraphCreator { + + List nodes; + String fileName; + String path; + String graphType; + Graph graph; + Gexf gexf; + HashMap nodesAdd; + + GraphCreator(String fn, String pt, String ty){ + fileName = fn; + path = pt; + graphType = ty; + nodes = new ArrayList(); + nodesAdd = new HashMap(); + } + + + void addVertex(Vertex a) { + nodes.add(a); + } + + + + void initGraph(String creator, String des) { + + gexf = new GexfImpl(); + Calendar date = Calendar.getInstance(); + + gexf.getMetadata() + .setLastModified(date.getTime()) + .setCreator(creator) + .setDescription(des); + gexf.setVisualization(true); + + graph = gexf.getGraph(); + graph.setDefaultEdgeType(EdgeType.UNDIRECTED).setMode(Mode.STATIC); + + AttributeList attrList = new AttributeListImpl(AttributeClass.NODE); + graph.getAttributeLists().add(attrList); + + } + + + void createGraph() { + + for(Vertex it : nodes) { + + Node root; + + if(!nodesAdd.containsValue(it.value)) { + root = graph.createNode(it.value).setLabel(it.value); + nodesAdd.put(it.value, root); + }else { + root = nodesAdd.get(it.value); + } + + for(String child : it.connections) { + + Node ch; + + if(!nodesAdd.containsValue(child)) { + ch = graph.createNode(child).setLabel(child); + nodesAdd.put(child, ch); + }else { + ch = nodesAdd.get(child); + } + + if(!root.hasEdgeTo(ch.getId()))root.connectTo(ch).setLabel(graphType); + } + } + } + + + + String savefile() { + //creates new file + StaxGraphWriter graphWriter = new StaxGraphWriter(); + File f = new File(fileName+".gexf"); + Writer out; + try { + out = new FileWriter(f, false); + graphWriter.writeToStream(gexf, out, "UTF-8"); + System.out.println(f.getAbsolutePath()); + } catch (IOException e) { + e.printStackTrace(); + } + + return f.getAbsolutePath(); + } + +} \ No newline at end of file diff --git a/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/pack/pack/Parser.java b/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/pack/pack/Parser.java new file mode 100644 index 0000000000..4713203b78 --- /dev/null +++ b/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/pack/pack/Parser.java @@ -0,0 +1,270 @@ +package pack.pack; + +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import org.openqa.selenium.By; +import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.chrome.ChromeDriver; + +public class Parser { + + + WebDriver driver; + String name; + HashMap DataBase; + String html; + Document doc; + String text; + Elements one = null; + Elements frase_noPhoto; + Elements frase_Photo; + + Parser(String url){ + + System.setProperty("webdriver.chrome.driver", "chromedriver"); + + driver = new ChromeDriver(); + name = "aladdin"; + DataBase = new HashMap(); + driver.get(url); + } + + void closeDriver() { + driver.quit(); + } + + void init () { + html = driver.getPageSource(); + doc = Jsoup.parse(html); + text = doc.body().text(); + one = null; + + + frase_noPhoto = doc.getElementsByClass("tweet js-stream-tweet js-actionable-tweet js-profile-popup-actionable dismissible-content\n" + + " \n" + + " \n" + + " \n" + + " descendant permalink-descendant-tweet\n" + + ""); + + frase_Photo = doc.getElementsByClass("tweet js-stream-tweet js-actionable-tweet js-profile-popup-actionable dismissible-content\n" + + " \n" + + " \n" + + " \n" + + " has-cards descendant permalink-descendant-tweet has-content\n" + + ""); + + } + + void threadSleep(long ms) { + try { + Thread.sleep(ms); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + void wait (String xpath, Boolean _type) { + + if (_type) + while(true) { + try { + driver.findElement(By.xpath(xpath)); + break; + }catch(Exception e) {} + } + else + while(true) { + try { + driver.findElement(By.xpath(xpath)); + + }catch(Exception e) {break;} + } + } + + void parsePhoto() { + for(Element head : frase_Photo) { + + Vertex rep; + try { + String value = head.selectFirst("span[class*=username u-dir u-textTruncate]").text(); + Element aux = head.select("div[class*=ReplyingToContextBelowAuthor]").first(); + String[] tokens = aux.select("span[class*=username u-dir u-textTruncate]").text().split(" "); + + if (DataBase.containsKey(value)) { + DataBase.get(value).connections.add(tokens[0]); + } else { + rep = new Vertex (value); + rep.connections.add(tokens[0]); + DataBase.put(value, rep); + } + } catch (Exception e) {continue;} + } + } + + + + void parseNoPhoto() { + for(Element head : frase_noPhoto) { + Vertex rep; + try { + String value = head.selectFirst("span[class*=username u-dir u-textTruncate]").text(); + Element aux = head.select("div[class*=ReplyingToContextBelowAuthor]").first(); + String[] tokens = aux.select("span[class*=username u-dir u-textTruncate]").text().split(" "); + if (DataBase.containsKey(value)) { + DataBase.get(value).connections.add(tokens[0]); + } else { + rep = new Vertex (value); + rep.connections.add(tokens[0]); + DataBase.put(value, rep); + } + }catch (Exception e) {continue;} + } + } + + void scrollAll() { + int i = 1; + int j = 1; + int aux = 0; + Boolean pass_j = false; + + JavascriptExecutor js = (JavascriptExecutor) driver; + //This will scroll the web page till end. + while (true) { + try { + try { + js.executeScript("arguments[0].scrollIntoView();",driver.findElement(By.xpath("(//div[@class='tweet js-stream-tweet js-actionable-tweet js-profile-popup-actionable dismissible-content\n" + + " \n" + + " \n" + + " \n" + + " has-cards descendant permalink-descendant-tweet has-content\n" + + "'])[" + Integer.toString(j) +"]"))); + j++; + pass_j = true; + } catch(Exception d) {} + + js.executeScript("arguments[0].scrollIntoView();",driver.findElement(By.xpath("(//div[@class='tweet js-stream-tweet js-actionable-tweet js-profile-popup-actionable dismissible-content\n" + + " \n" + + " \n" + + " \n" + + " descendant permalink-descendant-tweet\n" + + "'])[" + Integer.toString(i) +"]"))); + i++; + + aux = 0; + //System.out.println(i); + } catch (Exception e) { + + try { + if (pass_j) j--; + js.executeScript("arguments[0].scrollIntoView();",driver.findElement(By.xpath("(//div[@class='tweet js-stream-tweet js-actionable-tweet js-profile-popup-actionable dismissible-content\n" + + " \n" + + " \n" + + " \n" + + " has-cards descendant permalink-descendant-tweet has-content\n" + + "'])[" + Integer.toString(j) +"]"))); + j++; + pass_j = false; + + } catch(Exception d) { + threadSleep(1000); + aux++; + if (aux >= 3) { + System.out.println(i); + break; + } + } + + + } + } + } + + + void parseComments() { + this.scrollAll(); + this.init(); + this.parsePhoto(); + this.parseNoPhoto(); + } + + + void parserLikes() { + + driver.findElement(By.xpath("//a[@class='request-favorited-popup']")).click(); + + wait("//a[@class='SignupDialog-signinLink']",true); + + driver.findElement(By.xpath("//a[@class='SignupDialog-signinLink']")).click(); + + wait("//div[@class='AppContent wrapper wrapper-login']",false); + + driver.findElement(By.xpath("//a[@class='request-favorited-popup']")).click(); + System.out.println("inside-Likes"); + + threadSleep(3000); + + WebElement author = driver.findElement(By.xpath("//a[@class='account-group js-account-group js-action-profile js-user-profile-link js-nav']//span[@class='username u-dir u-textTruncate']")); + List names = driver.findElements(By.xpath("//a[@class='account-group js-user-profile-link']//span[@class='username u-dir u-textTruncate']")); + + Vertex vert = new Vertex(author.getText()); + for (WebElement name : names) { + + vert.addVertex(name.getText()); + + } + + DataBase.put(author.getText(), vert); + + } + + void parserRetweet() { + driver.findElement(By.xpath("//a[@class='request-retweeted-popup']")).click(); + + wait("//a[@class='SignupDialog-signinLink']",true); + + driver.findElement(By.xpath("//a[@class='SignupDialog-signinLink']")).click(); + + wait("//div[@class='AppContent wrapper wrapper-login']", false); + + System.out.println("inside-Retweets"); + + driver.findElement(By.xpath("//a[@class='request-retweeted-popup']")).click(); + threadSleep(3000); + + + WebElement value = driver.findElement(By.xpath("//a[@class='account-group js-account-group js-action-profile js-user-profile-link js-nav']//span[@class='username u-dir u-textTruncate']")); + + List names = driver.findElements(By.xpath("//a[@class='account-group js-user-profile-link']//span[@class='username u-dir u-textTruncate']")); + + Vertex vert = new Vertex(value.getText()); + + for(WebElement it : names) { + + vert.addVertex(it.getText()); + } + + + DataBase.put(value.getText(), vert); + + + } + + + void printData() { + for (String i : DataBase.keySet()) { + System.out.println("name: " + i + " Replays: " + DataBase.get(i).connections); + } + } + + +} \ No newline at end of file diff --git a/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/pack/pack/Vertex.java b/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/pack/pack/Vertex.java new file mode 100644 index 0000000000..7c64316916 --- /dev/null +++ b/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/java/pack/pack/Vertex.java @@ -0,0 +1,23 @@ +package pack.pack; + +import java.util.HashSet; +import java.util.Set; + + +public class Vertex { + + String value; + Set connections; + + Vertex(){} + Vertex(String val){ + value = val; + connections = new HashSet(); + } + + void addVertex(String a) { + connections.add(a); + } + + +} diff --git a/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/nbm/manifest.mf b/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/nbm/manifest.mf new file mode 100644 index 0000000000..12669c04f8 --- /dev/null +++ b/gephi-plugins-master/modules/TwitterBrowserImporter/src/main/nbm/manifest.mf @@ -0,0 +1,6 @@ +Manifest-Version: 1.0 +OpenIDE-Module-Name: TwitterBrowserImporter +OpenIDE-Module-Requires: org.openide.windows.WindowManager +OpenIDE-Module-Short-Description: twitter search importer +OpenIDE-Module-Long-Description: it will search into the internet and look for tweets +OpenIDE-Module-Display-Category: Import diff --git a/gephi-plugins-master/modules/TwitterBrowserImporter/target/classes/META-INF/MANIFEST.MF b/gephi-plugins-master/modules/TwitterBrowserImporter/target/classes/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..6a07a8daa7 --- /dev/null +++ b/gephi-plugins-master/modules/TwitterBrowserImporter/target/classes/META-INF/MANIFEST.MF @@ -0,0 +1,78 @@ +Manifest-Version: 1.0 +OpenIDE-Module-Name: TwitterBrowserImporter +OpenIDE-Module-Requires: org.openide.windows.WindowManager +OpenIDE-Module-Short-Description: twitter search importer +OpenIDE-Module-Long-Description: it will search into the internet and + look for tweets +OpenIDE-Module-Display-Category: Import +OpenIDE-Module-Specification-Version: 1.0.0 +OpenIDE-Module-Implementation-Version: 1.0.0 +OpenIDE-Module-Build-Version: 201906211516 +OpenIDE-Module: team2slliure.twitterbrowserimporter +OpenIDE-Module-Public-Packages: - +X-Class-Path: ext/team2slliure.twitterbrowserimporter/org-jdesktop/bea + nsbinding.jar ext/team2slliure.twitterbrowserimporter/org-seleniumhq- + selenium/selenium-java.jar ext/team2slliure.twitterbrowserimporter/or + g-seleniumhq-selenium/selenium-chrome-driver.jar ext/team2slliure.twi + tterbrowserimporter/org-seleniumhq-selenium/selenium-edge-driver.jar + ext/team2slliure.twitterbrowserimporter/org-seleniumhq-selenium/selen + ium-firefox-driver.jar ext/team2slliure.twitterbrowserimporter/org-se + leniumhq-selenium/selenium-ie-driver.jar ext/team2slliure.twitterbrow + serimporter/org-seleniumhq-selenium/selenium-opera-driver.jar ext/tea + m2slliure.twitterbrowserimporter/org-seleniumhq-selenium/selenium-rem + ote-driver.jar ext/team2slliure.twitterbrowserimporter/org-seleniumhq + -selenium/selenium-safari-driver.jar ext/team2slliure.twitterbrowseri + mporter/org-seleniumhq-selenium/selenium-support.jar ext/team2slliure + .twitterbrowserimporter/net-bytebuddy/byte-buddy.jar ext/team2slliure + .twitterbrowserimporter/org-apache-commons/commons-exec.jar ext/team2 + slliure.twitterbrowserimporter/commons-codec/commons-codec.jar ext/te + am2slliure.twitterbrowserimporter/commons-logging/commons-logging.jar + ext/team2slliure.twitterbrowserimporter/com-google-code-gson/gson.ja + r ext/team2slliure.twitterbrowserimporter/org-apache-httpcomponents/h + ttpclient.jar ext/team2slliure.twitterbrowserimporter/org-apache-http + components/httpcore.jar ext/team2slliure.twitterbrowserimporter/com-s + quareup-okhttp3/okhttp.jar ext/team2slliure.twitterbrowserimporter/co + m-squareup-okio/okio.jar ext/team2slliure.twitterbrowserimporter/com- + google-guava/guava.jar ext/team2slliure.twitterbrowserimporter/com-go + ogle-code-findbugs/jsr305.jar ext/team2slliure.twitterbrowserimporter + /org-checkerframework/checker-compat-qual.jar ext/team2slliure.twitte + rbrowserimporter/com-google-errorprone/error_prone_annotations.jar ex + t/team2slliure.twitterbrowserimporter/com-google-j2objc/j2objc-annota + tions.jar ext/team2slliure.twitterbrowserimporter/org-codehaus-mojo/a + nimal-sniffer-annotations.jar ext/team2slliure.twitterbrowserimporter + /org-jsoup/jsoup.jar ext/team2slliure.twitterbrowserimporter/org-code + haus-jackson/jackson-mapper-asl.jar ext/team2slliure.twitterbrowserim + porter/org-codehaus-jackson/jackson-core-asl.jar ext/team2slliure.twi + tterbrowserimporter/it-uniroma1-dis-wsngroup-gexf4j/gexf4j.jar ext/te + am2slliure.twitterbrowserimporter/org-codehaus-woodstox/woodstox-core + -asl.jar ext/team2slliure.twitterbrowserimporter/stax/stax-api.jar ex + t/team2slliure.twitterbrowserimporter/org-codehaus-woodstox/stax2-api + .jar ext/team2slliure.twitterbrowserimporter/javax-xml-stream/stax-ap + i.jar ext/team2slliure.twitterbrowserimporter/org-seleniumhq-selenium + /selenium-api.jar +Maven-Class-Path: org.jdesktop:beansbinding:1.2.1 org.seleniumhq.selen + ium:selenium-java:3.11.0 org.seleniumhq.selenium:selenium-chrome-driv + er:3.11.0 org.seleniumhq.selenium:selenium-edge-driver:3.11.0 org.sel + eniumhq.selenium:selenium-firefox-driver:3.11.0 org.seleniumhq.seleni + um:selenium-ie-driver:3.11.0 org.seleniumhq.selenium:selenium-opera-d + river:3.11.0 org.seleniumhq.selenium:selenium-remote-driver:3.11.0 or + g.seleniumhq.selenium:selenium-safari-driver:3.11.0 org.seleniumhq.se + lenium:selenium-support:3.11.0 net.bytebuddy:byte-buddy:1.7.9 org.apa + che.commons:commons-exec:1.3 commons-codec:commons-codec:1.10 commons + -logging:commons-logging:1.2 com.google.code.gson:gson:2.8.2 org.apac + he.httpcomponents:httpclient:4.5.3 org.apache.httpcomponents:httpcore + :4.4.6 com.squareup.okhttp3:okhttp:3.9.1 com.squareup.okio:okio:1.13. + 0 com.google.guava:guava:24.1-jre com.google.code.findbugs:jsr305:1.3 + .9 org.checkerframework:checker-compat-qual:2.0.0 com.google.errorpro + ne:error_prone_annotations:2.1.3 com.google.j2objc:j2objc-annotations + :1.1 org.codehaus.mojo:animal-sniffer-annotations:1.14 org.jsoup:jsou + p:1.11.3 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus. + jackson:jackson-core-asl:1.9.13 it.uniroma1.dis.wsngroup.gexf4j:gexf4 + j:0.4.1-BETA-SNAPSHOT org.codehaus.woodstox:woodstox-core-asl:4.0.6 s + tax:stax-api:1.0.1 org.codehaus.woodstox:stax2-api:3.1.1 javax.xml.st + ream:stax-api:1.0-2 org.seleniumhq.selenium:selenium-api:3.11.0 +OpenIDE-Module-Module-Dependencies: org.openide.windows > 6.75.1, org. + openide.util > 9.7.1, org.openide.util.ui > 9.6.1, org.openide.util.l + ookup > 8.33.1, org.openide.awt > 7.67.1, org.netbeans.modules.settin + gs/1 > 1.49.1, org.gephi.perspective.api > 0.9.2 + diff --git a/gephi-plugins-master/modules/module4/build.xml b/gephi-plugins-master/modules/module4/build.xml new file mode 100644 index 0000000000..03bf8397f0 --- /dev/null +++ b/gephi-plugins-master/modules/module4/build.xml @@ -0,0 +1,8 @@ + + + + + + Builds, tests, and runs the project org.myname.module. + + diff --git a/gephi-plugins-master/modules/module4/manifest.mf b/gephi-plugins-master/modules/module4/manifest.mf new file mode 100644 index 0000000000..e2e030056d --- /dev/null +++ b/gephi-plugins-master/modules/module4/manifest.mf @@ -0,0 +1,6 @@ +Manifest-Version: 1.0 +AutoUpdate-Show-In-Client: true +OpenIDE-Module: org.myname.module +OpenIDE-Module-Localizing-Bundle: org/myname/module/Bundle.properties +OpenIDE-Module-Specification-Version: 1.0 + diff --git a/gephi-plugins-master/modules/module4/nbproject/build-impl.xml b/gephi-plugins-master/modules/module4/nbproject/build-impl.xml new file mode 100644 index 0000000000..63525e1989 --- /dev/null +++ b/gephi-plugins-master/modules/module4/nbproject/build-impl.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gephi-plugins-master/modules/module4/nbproject/genfiles.properties b/gephi-plugins-master/modules/module4/nbproject/genfiles.properties new file mode 100644 index 0000000000..059a533fa1 --- /dev/null +++ b/gephi-plugins-master/modules/module4/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=eae66aa3 +build.xml.script.CRC32=19128e11 +build.xml.stylesheet.CRC32=a56c6a5b@2.71.1 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=eae66aa3 +nbproject/build-impl.xml.script.CRC32=7bfeea30 +nbproject/build-impl.xml.stylesheet.CRC32=238281d1@2.71.1 diff --git a/gephi-plugins-master/modules/module4/nbproject/platform.properties b/gephi-plugins-master/modules/module4/nbproject/platform.properties new file mode 100644 index 0000000000..d3194acba1 --- /dev/null +++ b/gephi-plugins-master/modules/module4/nbproject/platform.properties @@ -0,0 +1,22 @@ +cluster.path=\ + ${nbplatform.active.dir}/apisupport:\ + ${nbplatform.active.dir}/cnd:\ + ${nbplatform.active.dir}/cndext:\ + ${nbplatform.active.dir}/dlight:\ + ${nbplatform.active.dir}/enterprise:\ + ${nbplatform.active.dir}/ergonomics:\ + ${nbplatform.active.dir}/extide:\ + ${nbplatform.active.dir}/groovy:\ + ${nbplatform.active.dir}/harness:\ + ${nbplatform.active.dir}/ide:\ + ${nbplatform.active.dir}/java:\ + ${nbplatform.active.dir}/javacard:\ + ${nbplatform.active.dir}/javafx:\ + ${nbplatform.active.dir}/mobility:\ + ${nbplatform.active.dir}/nb:\ + ${nbplatform.active.dir}/php:\ + ${nbplatform.active.dir}/platform:\ + ${nbplatform.active.dir}/profiler:\ + ${nbplatform.active.dir}/webcommon:\ + ${nbplatform.active.dir}/websvccommon +nbplatform.active=default diff --git a/gephi-plugins-master/modules/module4/nbproject/project.properties b/gephi-plugins-master/modules/module4/nbproject/project.properties new file mode 100644 index 0000000000..b0194c4977 --- /dev/null +++ b/gephi-plugins-master/modules/module4/nbproject/project.properties @@ -0,0 +1,2 @@ +javac.source=1.7 +javac.compilerargs=-Xlint -Xlint:-serial diff --git a/gephi-plugins-master/modules/module4/nbproject/project.xml b/gephi-plugins-master/modules/module4/nbproject/project.xml new file mode 100644 index 0000000000..20f8e110b0 --- /dev/null +++ b/gephi-plugins-master/modules/module4/nbproject/project.xml @@ -0,0 +1,12 @@ + + + org.netbeans.modules.apisupport.project + + + org.myname.module + + + + + + diff --git a/gephi-plugins-master/modules/module4/src/org/myname/module/Bundle.properties b/gephi-plugins-master/modules/module4/src/org/myname/module/Bundle.properties new file mode 100644 index 0000000000..0266eababa --- /dev/null +++ b/gephi-plugins-master/modules/module4/src/org/myname/module/Bundle.properties @@ -0,0 +1 @@ +OpenIDE-Module-Name=module4 diff --git a/gephi-plugins-master/modules/pom.xml b/gephi-plugins-master/modules/pom.xml new file mode 100644 index 0000000000..3d3cbfaa18 --- /dev/null +++ b/gephi-plugins-master/modules/pom.xml @@ -0,0 +1,623 @@ + + + 4.0.0 + + org.gephi + gephi-plugin-parent + 0.9.2 + pom + + gephi-plugins-parent + Parent POM for all Gephi plugins + 2015 + + http://github.com/gephi/gephi-plugins + + + + scm:git:git://github.com/gephi/gephi-plugins.git + scm:git:git@github.com:gephi/gephi-plugins.git + https://github.com/gephi/gephi-plugins + + + + + + Apache 2.0 + http://www.opensource.org/licenses/Apache-2.0 + Apache License, Version 2.0 + + + + + + + mbastian + Mathieu Bastian + mathieu.bastian@gephi.org + + + eduramiba + Eduardo Ramos + eduardo.ramos@gephi.org + + + + + + UTF-8 + 0.9.2 + RELEASE82 + + + + + + oss-sonatype + oss-sonatype + https://oss.sonatype.org/content/repositories/snapshots/ + + true + + + + netbeans + NetBeans + http://bits.netbeans.org/nexus/content/groups/netbeans/ + + false + + + + + + + + + org.gephi + utils-longtask + ${gephi.version} + + + org.gephi + project-api + ${gephi.version} + + + org.gephi + io-exporter-api + ${gephi.version} + + + org.gephi + graph-api + ${gephi.version} + + + org.gephi + preview-api + ${gephi.version} + + + org.gephi + io-exporter-preview + ${gephi.version} + + + org.gephi + lib.validation + ${gephi.version} + + + org.gephi + preview-export-ui + ${gephi.version} + + + org.gephi + utils + ${gephi.version} + + + org.gephi + datalab-api + ${gephi.version} + + + org.gephi + visualization-api + ${gephi.version} + + + org.gephi + preview-plugin + ${gephi.version} + + + org.gephi + db-drivers + ${gephi.version} + + + org.gephi + io-importer-api + ${gephi.version} + + + org.gephi + io-processor-plugin + ${gephi.version} + + + org.gephi + processor-plugin-ui + ${gephi.version} + + + org.gephi + project-ui + ${gephi.version} + + + org.gephi + ui-utils + ${gephi.version} + + + org.gephi + ui-components + ${gephi.version} + + + org.gephi + settings-upgrader + ${gephi.version} + + + org.gephi + statistics-api + ${gephi.version} + + + org.gephi + statistics-plugin + ${gephi.version} + + + org.gephi + statistics-plugin-ui + ${gephi.version} + + + org.gephi + tools-api + ${gephi.version} + + + org.gephi + algorithms-plugin + ${gephi.version} + + + org.gephi + gleem + ${gephi.version} + + + org.gephi + mostrecentfiles-api + ${gephi.version} + + + org.gephi + desktop-project + ${gephi.version} + + + org.gephi + visualization + ${gephi.version} + + + org.gephi + tools-plugin + ${gephi.version} + + + org.gephi + welcome-screen + ${gephi.version} + + + org.gephi + desktop-context + ${gephi.version} + + + org.gephi + desktop-progress + ${gephi.version} + + + org.gephi + layout-api + ${gephi.version} + + + org.gephi + io-generator-api + ${gephi.version} + + + org.gephi + io-generator-plugin + ${gephi.version} + + + org.gephi + generator-plugin-ui + ${gephi.version} + + + org.gephi + io-exporter-plugin + ${gephi.version} + + + org.gephi + desktop-statistics + ${gephi.version} + + + org.gephi + filters-api + ${gephi.version} + + + org.gephi + layout-plugin + ${gephi.version} + + + org.gephi + desktop-generate + ${gephi.version} + + + org.gephi + desktop-banner + ${gephi.version} + + + org.gephi + desktop-branding + ${gephi.version} + + + org.gephi + appearance-api + ${gephi.version} + + + org.gephi + desktop-appearance + ${gephi.version} + + + org.gephi + io-importer-plugin + ${gephi.version} + + + org.gephi + desktop-datalab + ${gephi.version} + + + org.gephi + filters-plugin + ${gephi.version} + + + org.gephi + filters-impl + ${gephi.version} + + + org.gephi + export-plugin-ui + ${gephi.version} + + + org.gephi + desktop-recent-files + ${gephi.version} + + + org.gephi + desktop-io-export + ${gephi.version} + + + org.gephi + perspective-api + ${gephi.version} + + + org.gephi + import-plugin-ui + ${gephi.version} + + + org.gephi + filters-plugin-ui + ${gephi.version} + + + org.gephi + datalab-plugin + ${gephi.version} + + + org.gephi + desktop-layout + ${gephi.version} + + + org.gephi + desktop-import + ${gephi.version} + + + org.gephi + desktop-preview + ${gephi.version} + + + org.gephi + appearance-plugin + ${gephi.version} + + + org.gephi + appearance-plugin-ui + ${gephi.version} + + + org.gephi + desktop-tools + ${gephi.version} + + + org.gephi + timeline-api + ${gephi.version} + + + org.gephi + desktop-timeline + ${gephi.version} + + + org.gephi + directory-chooser + ${gephi.version} + + + org.gephi + desktop-filters + ${gephi.version} + + + org.gephi + core-library-wrapper + ${gephi.version} + + + org.gephi + ui-library-wrapper + ${gephi.version} + + + org.gephi + ui-propertyeditor + ${gephi.version} + + + org.netbeans.api + org-openide-dialogs + ${netbeans.version} + + + org.netbeans.api + org-openide-filesystems + ${netbeans.version} + + + org.netbeans.modules + org-netbeans-modules-masterfs + ${netbeans.version} + + + org.netbeans.api + org-openide-util + ${netbeans.version} + + + org.netbeans.api + org-openide-util-ui + ${netbeans.version} + + + org.netbeans.api + org-openide-util-lookup + ${netbeans.version} + + + org.netbeans.api + org-openide-windows + ${netbeans.version} + + + org.netbeans.api + org-openide-modules + ${netbeans.version} + + + org.netbeans.api + org-netbeans-modules-sendopts + ${netbeans.version} + + + org.netbeans.api + org-netbeans-api-progress + ${netbeans.version} + + + org.netbeans.api + org-netbeans-api-progress-nb + ${netbeans.version} + + + org.netbeans.api + org-openide-nodes + ${netbeans.version} + + + org.netbeans.api + org-openide-awt + ${netbeans.version} + + + org.netbeans.api + org-netbeans-modules-settings + ${netbeans.version} + + + org.netbeans.api + org-netbeans-modules-options-api + ${netbeans.version} + + + org.netbeans.api + org-netbeans-swing-outline + ${netbeans.version} + + + org.netbeans.api + org-openide-explorer + ${netbeans.version} + + + org.netbeans.api + org-netbeans-api-annotations-common + ${netbeans.version} + + + org.netbeans.api + org-netbeans-swing-tabcontrol + ${netbeans.version} + + + org.netbeans.api + org-openide-io + ${netbeans.version} + + + org.netbeans.modules + org-netbeans-core-output2 + ${netbeans.version} + + + org.netbeans.api + org-netbeans-modules-nbjunit + ${netbeans.version} + test + + + + + + + org.codehaus.mojo + nbm-maven-plugin + true + 3.14 + + plugins + + true + + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.5 + + true + + + + + + + + + release + + + + org.codehaus.mojo + nbm-maven-plugin + true + + + keystore.ks + gephi + ${keystore.password} + + + + + + + + + release-pom + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + sign-artifacts + verify + + sign + + + + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.6 + true + + ossrh + https://oss.sonatype.org/ + true + + + + + + + diff --git a/gephi-plugins-master/pom.xml b/gephi-plugins-master/pom.xml new file mode 100644 index 0000000000..a0b6e27048 --- /dev/null +++ b/gephi-plugins-master/pom.xml @@ -0,0 +1,222 @@ + + + 4.0.0 + + org.gephi + gephi-plugins + 0.9.2 + pom + + gephi-plugins + + + + + modules/TwitterBrowserImporter + + + + + + 0.9.2 + ${project.build.directory}/plugins_clusters + github + + + + + scm:git:git://github.com/gephi/gephi-plugins.git + scm:git:git@github.com:gephi/gephi-plugins.git + https://github.com/gephi/gephi-plugins + + + + + + oss-sonatype + oss-sonatype + https://oss.sonatype.org/content/repositories/snapshots/ + + true + + + + + + + + oss-sonatype + oss-sonatype + https://oss.sonatype.org/content/repositories/snapshots/ + + true + + + + + + + + ${project.groupId} + gephi + ${gephi.version} + linux + tar.gz + + + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 2.10 + + + org.codehaus.mojo + nbm-maven-plugin + 3.14 + + + org.gephi + gephi-maven-plugin + 1.2.3 + + ${project.build.directory}/gephi-${gephi.version} + + ${clusters.path}/plugins + + + + + com.github.github + site-maven-plugin + 0.12 + + + + + + + + + org.gephi + gephi-maven-plugin + + + validate-plugin + + validate + + validate + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + unpack + prepare-package + + unpack-dependencies + + + ${project.groupId} + gephi + + ${project.build.directory} + + + + + + + + + org.codehaus.mojo + nbm-maven-plugin + + ${clusters.path} + + + + package + + cluster + + + + + + + + + + + release + + + + + org.gephi + gephi-maven-plugin + + + create-autoupdate + + create-autoupdate + + package + + + build-metadata + + build-metadata + + package + + https://gephi.org/gephi-plugins/plugins/ + + + + validate-plugin + + validate + + none + + + + ${project.build.directory}/site/plugins/ + + + + + + com.github.github + site-maven-plugin + + Creating site for gephi-plugins version=${project.version} and gephiVersion=${gephi.version} + true + + + + + site + + package + + + + + + + + + diff --git a/modules/TwitterPlugin/README.md b/modules/TwitterPlugin/README.md new file mode 100644 index 0000000000..072d0631e0 --- /dev/null +++ b/modules/TwitterPlugin/README.md @@ -0,0 +1,4 @@ +## Twitter Plugin + +This README supports Markdown, see [syntax](https://help.github.com/articles/markdown-basics/) + diff --git a/pom.xml b/pom.xml index 25b31ee2d8..0dc3b3f161 100644 --- a/pom.xml +++ b/pom.xml @@ -12,6 +12,7 @@ + modules/TwitterPlugin modules/GeoLayout modules/LinkfluencePlugin modules/KBraceFilter