First implementation of a bookmarks system.

Not persistent yet, so you lose them all when you close ATCS.
This commit is contained in:
Zukero
2018-09-13 13:34:04 +02:00
parent bf42f86408
commit 0a3da17d47
19 changed files with 653 additions and 1 deletions

View File

@@ -75,6 +75,14 @@ public class DefaultIcons {
private static String FOLDER_AT_OPEN_RES = "/com/gpl/rpg/atcontentstudio/img/folder_at_open.png";
public static Image getATOpenImage() { return getImage(FOLDER_AT_OPEN_RES); }
public static Image getATOpenIcon() { return getIcon(FOLDER_AT_OPEN_RES); }
private static String FOLDER_BOOKMARK_CLOSED_RES = "/com/gpl/rpg/atcontentstudio/img/folder_bookmark_closed.png";
public static Image getBookmarkClosedImage() { return getImage(FOLDER_BOOKMARK_CLOSED_RES); }
public static Image getBookmarkClosedIcon() { return getIcon(FOLDER_BOOKMARK_CLOSED_RES); }
private static String FOLDER_BOOKMARK_OPEN_RES = "/com/gpl/rpg/atcontentstudio/img/folder_bookmark_open.png";
public static Image getBookmarkOpenImage() { return getImage(FOLDER_BOOKMARK_OPEN_RES); }
public static Image getBookmarkOpenIcon() { return getIcon(FOLDER_BOOKMARK_OPEN_RES); }
private static String TILED_ICON_RES = "/com/gpl/rpg/atcontentstudio/img/tiled-icon.png";
public static Image getTiledIconImage() { return getImage(TILED_ICON_RES); }
@@ -276,6 +284,14 @@ public class DefaultIcons {
public static Image getStatusUnknownImage() { return getImage(STATUS_UNKNOWN_RES); }
public static Image getStatusUnknownIcon() { return getIcon(STATUS_UNKNOWN_RES); }
private static String BOOKMARK_INACTIVE = "/com/gpl/rpg/atcontentstudio/img/bookmark_inactive.png";
public static Image getBookmarkInactiveImage() { return getImage(BOOKMARK_INACTIVE); }
public static Image getBookmarkInactiveIcon() { return getIcon(BOOKMARK_INACTIVE); }
private static String BOOKMARK_ACTIVE = "/com/gpl/rpg/atcontentstudio/img/bookmark_active.png";
public static Image getBookmarkActiveImage() { return getImage(BOOKMARK_ACTIVE); }
public static Image getBookmarkActiveIcon() { return getIcon(BOOKMARK_ACTIVE); }
private static Image getImage(String res) {
if (imageCache.get(res) == null) {

View File

@@ -812,7 +812,7 @@ public abstract class Editor extends JPanel implements ProjectElementListener {
if (text.length() > 60) {
text = text.substring(0, 57)+"...";
}
label.setText(((GameDataElement)value).getDataType().toString()+"/"+((Quest)((QuestStage)value).parent).id+":"+text);
label.setText(((GameDataElement)value).getDataType().toString()+"/"+((Quest)((QuestStage)value).parent).id+"#"+((QuestStage)value).progress+":"+text);
} else {
label.setText(((GameDataElement)value).getDataType().toString()+"/"+((GameDataElement)value).getDesc());
}

View File

@@ -33,6 +33,7 @@ import com.gpl.rpg.andorstrainer.AndorsTrainer;
import com.gpl.rpg.atcontentstudio.ATContentStudio;
import com.gpl.rpg.atcontentstudio.model.ProjectTreeNode;
import com.gpl.rpg.atcontentstudio.model.Workspace;
import com.gpl.rpg.atcontentstudio.model.bookmarks.BookmarkEntry;
import com.gpl.rpg.atcontentstudio.model.gamedata.JSONElement;
import com.gpl.rpg.atcontentstudio.model.maps.TMXMap;
import com.gpl.rpg.atcontentstudio.model.maps.WorldmapSegment;
@@ -595,6 +596,8 @@ public class ProjectsTree extends JPanel {
ATContentStudio.frame.openEditor((WorldmapSegment)node);
} else if (node instanceof WriterModeData) {
ATContentStudio.frame.openEditor((WriterModeData)node);
} else if (node instanceof BookmarkEntry) {
ATContentStudio.frame.openEditor(((BookmarkEntry)node).bookmarkedElement);
} else if (node instanceof SavedGame) {
if (konamiCodeEntered) {
ATContentStudio.frame.openEditor((SavedGame)node);

View File

@@ -213,6 +213,8 @@ public class StudioFrame extends JFrame {
openEditor((Spritesheet) node);
} else if (node instanceof TMXMap) {
openEditor((TMXMap) node);
} else if (node instanceof WorldmapSegment) {
openEditor((WorldmapSegment) node);
} else if (node instanceof WriterModeData) {
openEditor((WriterModeData) node);
}

View File

@@ -204,6 +204,7 @@ public abstract class JSONElementEditor extends Editor {
}
});
savePane.add(delete, JideBoxLayout.FIX);
} else {
if (proj.alteredContent.gameData.getGameDataElement(concreteNodeClass, node.id) != null) {
savePane.add(message = new JLabel(ALTERED_EXISTS_MESSAGE), JideBoxLayout.FIX);
@@ -242,8 +243,10 @@ public abstract class JSONElementEditor extends Editor {
}
JButton prev = new JButton(new ImageIcon(DefaultIcons.getArrowLeftIcon()));
JButton next = new JButton(new ImageIcon(DefaultIcons.getArrowRightIcon()));
final JButton bookmark = new JButton(new ImageIcon(node.bookmark != null ? DefaultIcons.getBookmarkActiveIcon() : DefaultIcons.getBookmarkInactiveIcon()));
savePane.add(prev, JideBoxLayout.FIX);
savePane.add(next, JideBoxLayout.FIX);
savePane.add(bookmark, JideBoxLayout.FIX);
if (node.getParent().getIndex(node) == 0) {
prev.setEnabled(false);
}
@@ -268,6 +271,20 @@ public abstract class JSONElementEditor extends Editor {
}
}
});
bookmark.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (node.bookmark == null) {
node.getProject().bookmark(node);
bookmark.setIcon(new ImageIcon(DefaultIcons.getBookmarkActiveIcon()));
} else {
node.bookmark.delete();
bookmark.setIcon(new ImageIcon(DefaultIcons.getBookmarkInactiveIcon()));
}
}
});
//Placeholder. Fills the eventual remaining space.
savePane.add(new JPanel(), JideBoxLayout.VARY);
pane.add(savePane, JideBoxLayout.FIX);

View File

@@ -1779,6 +1779,20 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe
}
});
savePane.add(delete, JideBoxLayout.FIX);
final JButton bookmark = new JButton(new ImageIcon(map.bookmark != null ? DefaultIcons.getBookmarkActiveIcon() : DefaultIcons.getBookmarkInactiveIcon()));
savePane.add(bookmark, JideBoxLayout.FIX);
bookmark.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (map.bookmark == null) {
map.getProject().bookmark(map);
bookmark.setIcon(new ImageIcon(DefaultIcons.getBookmarkActiveIcon()));
} else {
map.bookmark.delete();
bookmark.setIcon(new ImageIcon(DefaultIcons.getBookmarkInactiveIcon()));
}
}
});
} else {
if (proj.getMap(map.id) != map) {
savePane.add(message = new JLabel(ALTERED_EXISTS_MESSAGE), JideBoxLayout.FIX);
@@ -1842,6 +1856,20 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe
}
}
});
final JButton bookmark = new JButton(new ImageIcon(map.bookmark != null ? DefaultIcons.getBookmarkActiveIcon() : DefaultIcons.getBookmarkInactiveIcon()));
savePane.add(bookmark, JideBoxLayout.FIX);
bookmark.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (map.bookmark == null) {
map.getProject().bookmark(map);
bookmark.setIcon(new ImageIcon(DefaultIcons.getBookmarkActiveIcon()));
} else {
map.bookmark.delete();
bookmark.setIcon(new ImageIcon(DefaultIcons.getBookmarkInactiveIcon()));
}
}
});
//Placeholder. Fills the eventual remaining space.
savePane.add(new JPanel(), JideBoxLayout.VARY);
pane.add(savePane, JideBoxLayout.FIX);

View File

@@ -986,6 +986,20 @@ public class WorldMapEditor extends Editor implements FieldUpdateListener {
}
}
});
final JButton bookmark = new JButton(new ImageIcon(node.bookmark != null ? DefaultIcons.getBookmarkActiveIcon() : DefaultIcons.getBookmarkInactiveIcon()));
savePane.add(bookmark, JideBoxLayout.FIX);
bookmark.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (node.bookmark == null) {
node.getProject().bookmark(node);
bookmark.setIcon(new ImageIcon(DefaultIcons.getBookmarkActiveIcon()));
} else {
node.bookmark.delete();
bookmark.setIcon(new ImageIcon(DefaultIcons.getBookmarkInactiveIcon()));
}
}
});
//Placeholder. Fills the eventual remaining space.
savePane.add(new JPanel(), JideBoxLayout.VARY);
return savePane;

View File

@@ -100,6 +100,20 @@ public class SpritesheetEditor extends Editor {
});
buttonPane.add(openImage, JideBoxLayout.FIX);
buttonPane.add(getWarningLabel(), JideBoxLayout.FIX);
final JButton bookmark = new JButton(new ImageIcon(sheet.bookmark != null ? DefaultIcons.getBookmarkActiveIcon() : DefaultIcons.getBookmarkInactiveIcon()));
buttonPane.add(bookmark, JideBoxLayout.FIX);
bookmark.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (target.bookmark == null) {
target.getProject().bookmark(target);
bookmark.setIcon(new ImageIcon(DefaultIcons.getBookmarkActiveIcon()));
} else {
target.bookmark.delete();
bookmark.setIcon(new ImageIcon(DefaultIcons.getBookmarkInactiveIcon()));
}
}
});
buttonPane.add(new JPanel(), JideBoxLayout.VARY);
pane.add(buttonPane, JideBoxLayout.FIX);
addLabelField(pane, "Spritesheet ID: ", sheet.id);