Skip to content

Commit

Permalink
close #72
Browse files Browse the repository at this point in the history
  • Loading branch information
sjPlot committed Oct 13, 2015
1 parent c2618e7 commit 7c7adc5
Show file tree
Hide file tree
Showing 4 changed files with 113 additions and 1 deletion.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Ausführliche Anleitungen zu den verschiedenen Funktionen gibt es [in der Wiki](
* Das automatische Einklammern von Literaturfußnoten kann in den Einstellungen abgestellt werden ([#91](https://github.com/sjPlot/Zettelkasten/issues/91)).
* Über das Menü _Suchen_ (Untermenü _Zettel_) können jetzt Zettel gesucht werden, die Teil einer Folgezettelsequenz sind (entweder Ausgangs- oder Folgezettel).
* Über das Menü _Suchen_ (Untermenü _Zettel_) können jetzt Zettel gesucht werden, die _keine_ Querverweise enthalten (und auf die nicht durch Querverweise verwiesen wird) ([#34](https://github.com/sjPlot/Zettelkasten/issues/34)).
* Die Sortierung der Tabellenspalten wird gespeichert, sodass diese beim erneuten Programmstart wiederhergestellt wird ([#72](https://github.com/sjPlot/Zettelkasten/issues/72)).
* Literatur, die während der Neueingabe oder Bearbeiten eines Zettels als Literaturfußnote im Text referenziert wird, wird beim Beenden der Eingabe automatisch als Autorenangabe zum Zettel hinzugefügt, falls dies noch nicht geschehen ist.
* Verbesserte Stabilität aller Lese- und Schreib-Operationen von Daten (Import, Export, Laden, Speichern, Auto-Backup...).
* Geschwindigkeitsverbesserungen der Suchfunktionen ([#95](https://github.com/sjPlot/Zettelkasten/issues/95)).
Expand Down
23 changes: 22 additions & 1 deletion src/de/danielluedecke/zettelkasten/SearchResultsFrame.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
import java.awt.event.MouseEvent;
import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
Expand All @@ -92,6 +93,7 @@
import javax.swing.JTable;
import javax.swing.KeyStroke;
import javax.swing.ListSelectionModel;
import javax.swing.RowSorter;
import javax.swing.border.MatteBorder;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.ListSelectionEvent;
Expand Down Expand Up @@ -154,6 +156,13 @@ public class SearchResultsFrame extends javax.swing.JFrame {
*/
private final GraphicsDevice graphicdevice = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
private final JFrame searchframe;
/**
* Returns the table component of the search results window.
* @return the table component of the search results window.
*/
public JTable getSearchFrameTable() {
return jTableResults;
}
/**
* get the strings for file descriptions from the resource map
*/
Expand Down Expand Up @@ -1083,8 +1092,20 @@ private void initTable() {
catch (IndexOutOfBoundsException e) {
Constants.zknlogger.log(Level.WARNING,e.getLocalizedMessage());
}
// get last table sorting
RowSorter.SortKey sk = settingsObj.getTableSorting(jTableResults);
// any sorting found?
if (sk != null) {
// create array with sort key
ArrayList l = new ArrayList();
l.add(sk);
// set sort key to table
sorter.setSortKeys(l);
// sort table
sorter.sort();
}
// make extra table-sorter for itunes-tables
if (settingsObj.isMacStyle()) {
if (settingsObj.isMacAqua()) {
TableUtils.SortDelegate sortDelegate = new TableUtils.SortDelegate() {
@Override
public void sort(int columnModelIndex, TableUtils.SortDirection sortDirection) {
Expand Down
24 changes: 24 additions & 0 deletions src/de/danielluedecke/zettelkasten/ZettelkastenView.java
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.ListSelectionModel;
import javax.swing.RowSorter;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.MatteBorder;
Expand Down Expand Up @@ -2462,6 +2463,18 @@ private void setCustomTableRowSorter(JTable table, int column) {
} catch (IndexOutOfBoundsException e) {
Constants.zknlogger.log(Level.WARNING, e.getLocalizedMessage());
}
// get last table sorting
RowSorter.SortKey sk = settings.getTableSorting(table);
// any sorting found?
if (sk != null) {
// create array with sort key
ArrayList l = new ArrayList();
l.add(sk);
// set sort key to table
sorter.setSortKeys(l);
// sort table
sorter.sort();
}
}

/**
Expand Down Expand Up @@ -10689,6 +10702,17 @@ private synchronized void filterLinks() {
private void saveSettings() {
// save zettel-position
settings.setStartupEntry(data.getCurrentZettelPos());
// get table from search results window
JTable sft = null;
if (searchResultsDlg != null) {
sft = searchResultsDlg.getSearchFrameTable();
}
// svae table sorting
settings.setTableSorting(new javax.swing.JTable[]{
jTableLinks, jTableManLinks, jTableKeywords,
jTableAuthors, jTableTitles, jTableBookmarks,
jTableAttachments, sft
});
// save settings
if (!settings.saveSettings()) {
// if any problems occur, show error log
Expand Down
66 changes: 66 additions & 0 deletions src/de/danielluedecke/zettelkasten/database/Settings.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,10 @@
import java.util.zip.ZipOutputStream;
import javax.swing.JOptionPane;
import javax.swing.JSplitPane;
import javax.swing.RowSorter;
import javax.swing.SortOrder;
import javax.swing.UIManager;
import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
Expand Down Expand Up @@ -329,6 +332,7 @@ public boolean isNimbus() {
private static final String SETTING_LUHMANNTREEEXPANDLEVEL = "luhmanntreeexpandlevel";
private static final String SETTING_SEARCHWITHOUTFORMATTAGS = "searchwithoutformattags";
private static final String SETTING_MAKELUHMANNCOLUMNSORTABLE = "makeluhmanncolumnsortable";
private static final String SETTING_TABLEROWSORTING = "tablerowsorting";

public static final String SETTING_LOGKEYWORDLIST_OR = "OR";
public static final String SETTING_LOGKEYWORDLIST_AND = "AND";
Expand Down Expand Up @@ -726,6 +730,7 @@ else if (System.getProperty("os.name").startsWith("Linux")) {
genericElementInit(SETTING_HIGHLIGHTKEYWORDS, "0");
genericElementInit(SETTING_SHOWSEARCHENTRY, "0");
genericElementInit(SETTING_SUPFOOTNOTE, "1");
genericElementInit(SETTING_TABLEROWSORTING, "");
genericElementInit(SETTING_JUMPFOOTNOTE, "0");
genericElementInit(SETTING_STARTUPENTRY, "1");
genericElementInit(SETTING_SHOWATSTARTUP, "0");
Expand Down Expand Up @@ -1293,7 +1298,68 @@ public String getFileName() {
return null;
}

public void setTableSorting(javax.swing.JTable[] tables) {
Element el = settingsFile.getRootElement().getChild(SETTING_TABLEROWSORTING);
if (null == el) {
el = new Element(SETTING_TABLEROWSORTING);
settingsFile.getRootElement().addContent(el);
}
// iterate all tables
for (javax.swing.JTable t : tables) {
// check if table is valid
if (t != null) {
// get sorter for each table
javax.swing.DefaultRowSorter sorter = (javax.swing.DefaultRowSorter) t.getRowSorter();
// get sort keys (column, sort order)
List<RowSorter.SortKey> sk = sorter.getSortKeys();
if (sk != null && sk.size() > 0) {
// get first element
RowSorter.SortKey ssk = sk.get(0);
// set sortcolumn and sort order
String value = String.valueOf(ssk.getColumn()) + "," + ssk.getSortOrder().toString();
el.setAttribute(t.getName(), value);
}
}
}
}

public RowSorter.SortKey getTableSorting(javax.swing.JTable table) {
if (table != null) {
Element el = settingsFile.getRootElement().getChild(SETTING_TABLEROWSORTING);
// get sorting attributes
List<Attribute> attr = el.getAttributes();
// check if we found any sorting attributes
if (!attr.isEmpty()) {
// find associated table attribute
for (Attribute a : attr) {
// found table attribute?
if (a.getName().equals(table.getName())) {
// get attributes
String[] values = a.getValue().split(",");
// sorted column
int col = Integer.parseInt(values[0]);
SortOrder so;
// sort direction
switch (values[1]) {
case "DESCENDING":
so = SortOrder.DESCENDING;
break;
case "ASCENDING":
so = SortOrder.ASCENDING;
break;
default:
so = SortOrder.UNSORTED;
break;
}
// create and return sortkey
return new RowSorter.SortKey(col, so);
}
}
}
}
return null;
}

/**
* Retrieves the filepath of the last used image path when inserting images to a new entry
*
Expand Down

0 comments on commit 7c7adc5

Please sign in to comment.