From 1365bc4d441b958d7ffd8a03f5c0645845f1e9e9 Mon Sep 17 00:00:00 2001 From: David Boissier Date: Fri, 13 Dec 2013 11:03:12 +0100 Subject: [PATCH] update README doc --- CHANGELOG.txt | 5 ++- README.md | 76 ++++++++++++++++---------------- doc/mongo4idea-addKeyDialog.png | Bin 0 -> 24176 bytes 3 files changed, 41 insertions(+), 40 deletions(-) create mode 100644 doc/mongo4idea-addKeyDialog.png diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 6e7ef8a..5fd87be 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,5 +1,8 @@ Version 0.5.0 - * [add] Document can be edited + * [fix] #57 Fatal Error with new releases of Jebrains products(Webstorm 7, Idea 13, etc.) due to some API changes + * [fix] #48 Key column is not resizable + * [add] Document can be edited (right click on the object id of the document) + * [add] Collections can be cleared (right click on the collection in the mongo explorer) Version 0.4.3 * [add] Enable aggregation query button diff --git a/README.md b/README.md index c70c2d1..15bb913 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,7 @@ -# Mongo Plugin for IntelliJ IDEA version 0.4.3 +# Mongo Plugin for IntelliJ IDEA version 0.5.0 -## Version 0.5.0-SNAPSHOT -[version for Idea 13 EAP and latest WebStorm 7](https://github.com/dboissier/mongo4idea/blob/master/snapshot/mongo4idea-0.5.0-SNAPSHOT-for-Idea13-distribution.zip?raw=true), [version for old Idea 11 and other IDE](https://github.com/dboissier/mongo4idea/blob/master/snapshot/mongo4idea-0.5.0-SNAPSHOT-distribution.zip?raw=true) - -* [fix] Fatal Error with WebStorm 7 RC 131.130 (I had to compile with Idea 13 plateform, but without any changes, strange isn't it?) -* **NEW** [add] document can be edited (update value, delete key, add (key, value) or value), save and delete document) -* **NEW** [add] collections can be cleared (right click on the collection in the mongo explorer) - -### Important notice - -Some bugs were reported when installing the SNAPSHOT version of the plugin. Mainly some `ClassNotFoundDefException`. This could happen whenever you have a previous version of the plugin already installed in the IDE. -To fix it, the steps should be as follow: -* Locate the IDE working directory. For WebStorm, it is `.WebStorm` and for Intellij, it is `.IntelliJIdea` -* In it, remove the snapshot and the stable versions from `/config/plugins` -* Download again the right version for your target IDE -* Deflate the archive in the same folder -* You should have one instance of the plugin: `/config/plugins/mongo4idea-0.5.0-SNAPSHOT` - -Restart your IDE and it should be ok :). - -### Last developer notes on the document edition - -Why could the document be edited directly in the tree result? - -After making some tries, many issues were found: -* Sometimes, projection can be used in the query. Edition requires having the object **id** to send the updated value to the mongo server and have all Mongo object content. -* When the user updates a value, it was sent directely to the server. It is not convenient and does not handle misstyping. The user would like to update a set of key value. - -So, I decided to make a specific GUI for it: -* Easier to make and test -* Component non coupled with the result tree. -* The user has the full control on the update/save operations - - -### ChangeLog of the stable 0.4.3 - -see [CHANGELOG.txt](https://github.com/dboissier/mongo4idea/blob/mongo4idea-0.4.3/CHANGELOG.txt) +see [CHANGELOG.txt](https://github.com/dboissier/mongo4idea/blob/mongo4idea-0.5.0/CHANGELOG.txt) ## Description @@ -122,14 +87,18 @@ If you have an error during query execution, a feedback panel is displayed below ## [NEW] Document edition -Any document can be edited by double-clicking the **object id**. A panel will be opened on the right. +Any document can be edited by double-clicking on the **object id** (or by right-clicking). A panel will be opened on the right. ![Document Edition](https://github.com/dboissier/mongo4idea/blob/master/doc/mongo4idea-documentEdition.png?raw=true) You can edit the value either by double-clicking or by typing F2 key. -You can delete a key by right-clicking on it and select **Delete Key** +You can delete a key by right-clicking on it and select **Delete this** * Click on the **save** button to send the modification to the mongo server * Click on the **delete** button to delete it +You can add a key or value (depending on the structure of your document) by right-clicking on it and select **Add a Key** (or **Add a Value**). A dialog will appear. +![Add Key Dialog](https://github.com/dboissier/mongo4idea/blob/master/doc/mongo4idea-addKeyDialog.png?raw=true) + +Set the key name, type and value and then validate your form. ### Mongo shell integration @@ -140,6 +109,7 @@ If you set the mongo client path (e.g. /usr/bin/mongo), you can run the console ## Thanks + I would like to thank: * MongoDB team * Mongo Java Driver team @@ -149,3 +119,31 @@ I would like to thank: * Neko team, my first beta testers ;) * All users of this plugin who sent me valuable suggestions. * My wife and my daughter who support me to have fun in software development and also remind me my husband/father duty ;). + + +### Last Developer notes + + +#### Why could the document be edited directly in the tree result? + +After making some tries, many issues were found: +* Sometimes, projection can be used in the query. Edition requires having the object **id** to send the updated value to the mongo server and have all Mongo object content. +* When the user updates a value, it was sent directely to the server. It is not convenient and does not handle misstyping. The user would like to update a set of key value. + +So, I decided to make a specific GUI for it: +* Easier to make and test +* Component non coupled with the result tree. +* The user has the full control on the update/save operations + + +### The plugin does not work. I have `ClassNotFoundDefException` + +Some bugs were reported when installing the SNAPSHOT version of the plugin. Mainly some `ClassNotFoundDefException`. This could happen whenever you have a previous version of the plugin already installed in the IDE. +To fix it, the steps should be as follow: +* Locate the IDE working directory. For WebStorm, it is `.WebStorm` and for Intellij, it is `.IntelliJIdea` +* In it, remove the snapshot and the stable versions from `/config/plugins` +* Download again the right version for your target IDE +* Deflate the archive in the same folder +* You should have one instance of the plugin: `/config/plugins/mongo4idea-0.X.Y-SNAPSHOT` + +Restart your IDE and it should be ok :). \ No newline at end of file diff --git a/doc/mongo4idea-addKeyDialog.png b/doc/mongo4idea-addKeyDialog.png new file mode 100644 index 0000000000000000000000000000000000000000..541226cc03e41b4cba4bccf3abc681f89d8b96d6 GIT binary patch literal 24176 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 YTlKpcyTkL}xX1>ete^q?CTAA%U*xE$RsaA1 literal 0 HcmV?d00001