OSDN Git Service

Modify tag completion to be a little less ugly and remove the potential for duplicati...
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / gui / BrowserWindow.java
index c4fb69e..077c906 100644 (file)
@@ -28,6 +28,7 @@ import java.security.NoSuchAlgorithmException;
 import java.text.SimpleDateFormat;\r
 import java.util.ArrayList;\r
 import java.util.Calendar;\r
+import java.util.Collections;\r
 import java.util.Date;\r
 import java.util.GregorianCalendar;\r
 import java.util.HashMap;\r
@@ -510,6 +511,7 @@ public class BrowserWindow extends QWidget {
                setNote(null);\r
                browser.setContent(new QByteArray());\r
                tagEdit.setText("");\r
+               tagEdit.tagCompleter.reset();\r
                urlLabel.setText(tr("Source URL:"));\r
                titleLabel.setText("");\r
                logger.log(logger.EXTREME, "Exiting BrowserWindow.clear()");\r
@@ -559,6 +561,7 @@ public class BrowserWindow extends QWidget {
        public void setTag(String t) {\r
                saveTagList = t;\r
                tagEdit.setText(t);\r
+               tagEdit.tagCompleter.reset();\r
        }\r
 \r
        // Set the source URL\r
@@ -1293,15 +1296,34 @@ public class BrowserWindow extends QWidget {
        // Tag line has been modified by typing text\r
        @SuppressWarnings("unused")\r
        private void modifyTagsTyping() {\r
-\r
-               String newTags = tagEdit.text();\r
-               List<String> test = tagEdit.tagCompleter.getTagList();\r
-               if (newTags.equalsIgnoreCase(saveTagList))\r
+               String completionText = "";\r
+               if (tagEdit.currentCompleterSelection != null && !tagEdit.currentCompleterSelection.equals("")) {\r
+                       completionText = tagEdit.currentCompleterSelection;\r
+                       tagEdit.currentCompleterSelection = "";\r
+               }\r
+               \r
+               if (tagEdit.text().equalsIgnoreCase(saveTagList))\r
                        return;\r
 \r
                // We know something has changed...\r
                String oldTagArray[] = saveTagList.split(Global.tagDelimeter);\r
-               String newTagArray[] = newTags.split(Global.tagDelimeter);\r
+               String newTagArray[] = tagEdit.text().split(Global.tagDelimeter);\r
+               \r
+               if (!completionText.equals("") && newTagArray.length > 0) {\r
+                       newTagArray[newTagArray.length-1] = completionText;\r
+               }\r
+               // Remove any potential duplicates from the new list\r
+               for (int i=0; i<newTagArray.length; i++) {\r
+                       boolean foundOnce = false;\r
+                       for (int j=0; j<newTagArray.length; j++) {\r
+                               if (newTagArray[j].equalsIgnoreCase(newTagArray[i])) {\r
+                                       if (!foundOnce) {\r
+                                               foundOnce = true;\r
+                                       } else\r
+                                               newTagArray[j] = "";\r
+                               }\r
+                       }\r
+               }\r
 \r
                List<String> newTagList = new ArrayList<String>();\r
                List<String> oldTagList = new ArrayList<String>();\r
@@ -1313,6 +1335,18 @@ public class BrowserWindow extends QWidget {
                        if (!newTagArray[i].trim().equals(""))\r
                                newTagList.add(newTagArray[i]);\r
 \r
+               // Let's cleanup the appearance of the tag list\r
+               Collections.sort(newTagList);\r
+               String newDisplay = "";\r
+               for (int i=0; i<newTagList.size(); i++) {\r
+                       newDisplay = newDisplay+newTagList.get(i);\r
+                       if (i<newTagList.size()-1)\r
+                               newDisplay = newDisplay+", ";\r
+               }\r
+               tagEdit.blockSignals(true);\r
+               tagEdit.setText(newDisplay);\r
+               tagEdit.blockSignals(false);\r
+               \r
                // We now have lists of the new & old. Remove duplicates. If all\r
                // are removed from both then nothing has really changed\r
                for (int i = newTagList.size() - 1; i >= 0; i--) {\r
@@ -1329,13 +1363,14 @@ public class BrowserWindow extends QWidget {
 \r
                if (oldTagList.size() != 0 || newTagList.size() != 0) {\r
                        currentTags.clear();\r
+                       newTagArray = tagEdit.text().split(Global.tagDelimeter);\r
                        for (int i = 0; i < newTagArray.length; i++)\r
                                if (!newTagArray[i].trim().equals(""))\r
                                        currentTags.add(newTagArray[i].trim());\r
 \r
                        noteSignal.tagsChanged.emit(currentNote.getGuid(), currentTags);\r
                }\r
-\r
+               \r
        }\r
 \r
        // Tab button was pressed\r
@@ -1419,9 +1454,6 @@ public class BrowserWindow extends QWidget {
                String content = getContent();\r
                checkNoteTitle();\r
                noteSignal.noteChanged.emit(currentNote.getGuid(), content); \r
-               \r
-               \r
-//        noteSignal.noteChanged.emit(currentNote.getGuid(), unicode);\r
        }\r
 \r
        // The notebook selection has changed\r
@@ -1631,7 +1663,6 @@ public class BrowserWindow extends QWidget {
                                icon = findIcon(type[0]);\r
                        if (icon.equals("attachment.png"))\r
                                icon = findIcon(url.substring(url.lastIndexOf(".")+1));\r
-                       StringBuffer imageBuffer = new StringBuffer();\r
                        String imageURL = FileUtils.toFileURLString(Global.getFileManager().getImageDirFile(icon));\r
 \r
                        logger.log(logger.EXTREME, "Creating resource ");\r
@@ -1850,6 +1881,7 @@ public class BrowserWindow extends QWidget {
                noteSignal.authorChanged.emit(currentNote.getGuid(), authorText.text());\r
        }\r
        \r
+       @SuppressWarnings("unused")\r
        private void geoBoxChanged() {\r
                int index = geoBox.currentIndex();\r
                geoBox.setCurrentIndex(0);\r
@@ -2053,7 +2085,6 @@ public class BrowserWindow extends QWidget {
        //* MicroFocus changed\r
        //****************************************************************\r
        private void microFocusChanged() {\r
-               \r
                boldButton.setDown(false);\r
                italicButton.setDown(false);\r
                underlineButton.setDown(false);\r