diff --git a/res/de/jClipCorn/gui/localization/locale.properties b/res/de/jClipCorn/gui/localization/locale.properties
index 0bd79253..c50c9b28 100644
--- a/res/de/jClipCorn/gui/localization/locale.properties
+++ b/res/de/jClipCorn/gui/localization/locale.properties
@@ -1189,6 +1189,9 @@ RandomMovieFrame.btnPlay.text = Play
RandomMovieFrame.btnShuffle.text = Shuffle
RandomMovieFrame.this.title = Random Movie
+ReferenceChooserDialog.btnAppend = Append
+ReferenceChooserDialog.title = References (Online)
+
ResourcePreloadMode.Opt0 = No preload
ResourcePreloadMode.Opt1 = Synchronous preloading
ResourcePreloadMode.Opt2 = Asynchronous preloading
diff --git a/res/de/jClipCorn/gui/localization/locale_de_DE.properties b/res/de/jClipCorn/gui/localization/locale_de_DE.properties
index 9422abf0..c28b8938 100644
--- a/res/de/jClipCorn/gui/localization/locale_de_DE.properties
+++ b/res/de/jClipCorn/gui/localization/locale_de_DE.properties
@@ -1189,6 +1189,9 @@ RandomMovieFrame.btnPlay.text = Abspielen
RandomMovieFrame.btnShuffle.text = Mischen
RandomMovieFrame.this.title = Filmtrommel
+ReferenceChooserDialog.btnAppend = Neu
+ReferenceChooserDialog.title = Referenzen (Online)
+
ResourcePreloadMode.Opt0 = Kein Vorladen
ResourcePreloadMode.Opt1 = Synchrones Vorladen
ResourcePreloadMode.Opt2 = Asynchrones Vorladen
diff --git a/res/de/jClipCorn/gui/localization/locale_dl_DL.properties b/res/de/jClipCorn/gui/localization/locale_dl_DL.properties
index 1e4c803f..a1eb32eb 100644
--- a/res/de/jClipCorn/gui/localization/locale_dl_DL.properties
+++ b/res/de/jClipCorn/gui/localization/locale_dl_DL.properties
@@ -1189,6 +1189,9 @@ RandomMovieFrame.btnPlay.text = Play
RandomMovieFrame.btnShuffle.text = Shuffle
RandomMovieFrame.this.title = Filmtrommel
+ReferenceChooserDialog.btnAppend = Append
+ReferenceChooserDialog.title = Referenzen (Online)
+
ResourcePreloadMode.Opt0 = No preload
ResourcePreloadMode.Opt1 = Synchronous preloading
ResourcePreloadMode.Opt2 = Asynchronous preloading
diff --git a/res/de/jClipCorn/gui/localization/locale_en_US.properties b/res/de/jClipCorn/gui/localization/locale_en_US.properties
index 2764fdc3..85e945f1 100644
--- a/res/de/jClipCorn/gui/localization/locale_en_US.properties
+++ b/res/de/jClipCorn/gui/localization/locale_en_US.properties
@@ -1189,6 +1189,9 @@ RandomMovieFrame.btnPlay.text = Play
RandomMovieFrame.btnShuffle.text = Shuffle
RandomMovieFrame.this.title = Random Movie
+ReferenceChooserDialog.btnAppend = Append
+ReferenceChooserDialog.title = References (Online)
+
ResourcePreloadMode.Opt0 = No preload
ResourcePreloadMode.Opt1 = Synchronous preloading
ResourcePreloadMode.Opt2 = Asynchronous preloading
diff --git a/res/icons/common/bullet_add_16x16.png b/res/icons/common/bullet_add_16x16.png
new file mode 100644
index 00000000..cbcab12b
Binary files /dev/null and b/res/icons/common/bullet_add_16x16.png differ
diff --git a/res/icons/common/bullet_arrow_down_16x16.png b/res/icons/common/bullet_arrow_down_16x16.png
new file mode 100644
index 00000000..40156dd5
Binary files /dev/null and b/res/icons/common/bullet_arrow_down_16x16.png differ
diff --git a/res/icons/common/bullet_arrow_up_16x16.png b/res/icons/common/bullet_arrow_up_16x16.png
new file mode 100644
index 00000000..66d2709b
Binary files /dev/null and b/res/icons/common/bullet_arrow_up_16x16.png differ
diff --git a/res/icons/common/bullet_delete_16x16.png b/res/icons/common/bullet_delete_16x16.png
new file mode 100644
index 00000000..7072597e
Binary files /dev/null and b/res/icons/common/bullet_delete_16x16.png differ
diff --git a/src/main/de/jClipCorn/Main.java b/src/main/de/jClipCorn/Main.java
index 3a50dd27..1e05aa6b 100644
--- a/src/main/de/jClipCorn/Main.java
+++ b/src/main/de/jClipCorn/Main.java
@@ -28,7 +28,7 @@
public class Main {
public final static String TITLE = "jClipCorn"; //$NON-NLS-1$
- public final static String VERSION = /**/"1.10.5.35"/**/; //$NON-NLS-1$
+ public final static String VERSION = /**/"1.10.5.36"/**/; //$NON-NLS-1$
public final static String DBVERSION = "12"; //$NON-NLS-1$
public final static String JXMLVER = "2"; //$NON-NLS-1$
@@ -212,8 +212,6 @@ private static void post_init(String[] args) {
//TODO localsync: also autosave to other dir (== nextcloud) (or directly sync with server??)
// php viewer: view synced data online with webpage(read-only)
-//TODO Edit OnlineRef in own dialog with more options (move, sort, insert, ...)
-
//TODO (optional) add a season ref to an online ref to associate it with a specific season
//TODO re-do PlainTextExporter
diff --git a/src/main/de/jClipCorn/database/databaseElement/columnTypes/CCOnlineReferenceList.java b/src/main/de/jClipCorn/database/databaseElement/columnTypes/CCOnlineReferenceList.java
index 12c4cc78..bddf2fc2 100644
--- a/src/main/de/jClipCorn/database/databaseElement/columnTypes/CCOnlineReferenceList.java
+++ b/src/main/de/jClipCorn/database/databaseElement/columnTypes/CCOnlineReferenceList.java
@@ -1,7 +1,6 @@
package de.jClipCorn.database.databaseElement.columnTypes;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
diff --git a/src/main/de/jClipCorn/database/databaseElement/columnTypes/CCTagList.java b/src/main/de/jClipCorn/database/databaseElement/columnTypes/CCTagList.java
index 8283cb64..60caaf47 100644
--- a/src/main/de/jClipCorn/database/databaseElement/columnTypes/CCTagList.java
+++ b/src/main/de/jClipCorn/database/databaseElement/columnTypes/CCTagList.java
@@ -256,7 +256,7 @@ public static CCTagList deserialize(String v) throws TagNotFoundException
boolean[] n = new boolean[TAGCOUNT];
for (int i = 0; i < TAGCOUNT; i++) n[i] = false;
- for (String str : v.split(";"))
+ for (String str : v.split(";")) //$NON-NLS-1$
{
if (!Str.isNullOrWhitespace(str)) n[CCSingleTag.find(Integer.parseInt(str)).Index] = true;
}
diff --git a/src/main/de/jClipCorn/gui/frames/editMovieFrame/EditMovieFrame.java b/src/main/de/jClipCorn/gui/frames/editMovieFrame/EditMovieFrame.java
index 90ccf295..f892ea65 100644
--- a/src/main/de/jClipCorn/gui/frames/editMovieFrame/EditMovieFrame.java
+++ b/src/main/de/jClipCorn/gui/frames/editMovieFrame/EditMovieFrame.java
@@ -393,7 +393,7 @@ private void initGUI() {
spnLength = new JSpinner();
spnLength.setModel(new SpinnerNumberModel(0, 0, null, 1));
- spnLength.setBounds(93, 405, 212, 20);
+ spnLength.setBounds(93, 405, 163, 20);
getContentPane().add(spnLength);
label_19 = new JLabel(LocaleBundle.getString("AddMovieFrame.lblLength.text")); //$NON-NLS-1$
@@ -405,7 +405,7 @@ private void initGUI() {
getContentPane().add(spnAddDate);
label_20 = new JLabel("min."); //$NON-NLS-1$
- label_20.setBounds(314, 407, 52, 16);
+ label_20.setBounds(266, 407, 52, 16);
getContentPane().add(label_20);
label_21 = new JLabel(LocaleBundle.getString("AddMovieFrame.lblEinfgDatum.text")); //$NON-NLS-1$
@@ -570,19 +570,19 @@ private void initGUI() {
getContentPane().add(edGroups);
btnMediaInfo1 = new JButton(Resources.ICN_MENUBAR_UPDATECODECDATA.get16x16());
- btnMediaInfo1.setBounds(386, 375, 22, 22);
+ btnMediaInfo1.setBounds(314, 376, 22, 22);
btnMediaInfo1.addActionListener(e -> parseCodecMetadata_Lang());
btnMediaInfo1.setToolTipText("MediaInfo"); //$NON-NLS-1$
getContentPane().add(btnMediaInfo1);
btnMediaInfoRaw = new JButton("..."); //$NON-NLS-1$
- btnMediaInfoRaw.setBounds(411, 375, 32, 22);
+ btnMediaInfoRaw.setBounds(339, 376, 32, 22);
btnMediaInfoRaw.addActionListener(e -> showCodecMetadata());
btnMediaInfoRaw.setToolTipText("MediaInfo"); //$NON-NLS-1$
getContentPane().add(btnMediaInfoRaw);
btnMediaInfo2 = new JButton(Resources.ICN_MENUBAR_UPDATECODECDATA.get16x16());
- btnMediaInfo2.setBounds(386, 402, 22, 22);
+ btnMediaInfo2.setBounds(314, 403, 22, 22);
btnMediaInfo2.addActionListener(e -> parseCodecMetadata_Len());
btnMediaInfo2.setToolTipText("MediaInfo"); //$NON-NLS-1$
getContentPane().add(btnMediaInfo2);
diff --git a/src/main/de/jClipCorn/gui/guiComponents/referenceChooser/JReferenceChooser.java b/src/main/de/jClipCorn/gui/guiComponents/referenceChooser/JReferenceChooser.java
index 22523d3f..9e028ea9 100644
--- a/src/main/de/jClipCorn/gui/guiComponents/referenceChooser/JReferenceChooser.java
+++ b/src/main/de/jClipCorn/gui/guiComponents/referenceChooser/JReferenceChooser.java
@@ -2,6 +2,7 @@
import java.awt.BorderLayout;
import java.awt.Insets;
+import java.awt.event.InputEvent;
import java.util.ArrayList;
import java.util.List;
@@ -31,8 +32,13 @@ private void initGUI() {
add(btnAdditional, BorderLayout.EAST);
btnAdditional.addActionListener(e ->
{
- ReferenceChooserPopup popup = new ReferenceChooserPopup(_additional, JReferenceChooser.this);
- popup.setVisible(true);
+ if ((e.getModifiers() & InputEvent.CTRL_MASK) == InputEvent.CTRL_MASK) {
+ ReferenceChooserDialog dialog = new ReferenceChooserDialog(mainChooser.getValue(), _additional, JReferenceChooser.this);
+ dialog.setVisible(true);
+ } else {
+ ReferenceChooserPopup popup = new ReferenceChooserPopup(_additional, JReferenceChooser.this);
+ popup.setVisible(true);
+ }
});
btnAdditional.setMargin(new Insets(2, 4, 2, 4));
btnAdditional.setFocusable(false);
@@ -63,6 +69,11 @@ private void updateUIControls() {
mainChooser.updateUIControls();
btnAdditional.setText("+"+_additional.size()); //$NON-NLS-1$
}
+
+ public void setMain(CCSingleOnlineReference a) {
+ mainChooser.setValue(a);
+ updateUIControls();
+ }
public void setAdditional(List a) {
_additional = CCStreams
diff --git a/src/main/de/jClipCorn/gui/guiComponents/referenceChooser/ReferenceChooserDialog.java b/src/main/de/jClipCorn/gui/guiComponents/referenceChooser/ReferenceChooserDialog.java
new file mode 100644
index 00000000..79d8ee0e
--- /dev/null
+++ b/src/main/de/jClipCorn/gui/guiComponents/referenceChooser/ReferenceChooserDialog.java
@@ -0,0 +1,224 @@
+package de.jClipCorn.gui.guiComponents.referenceChooser;
+
+import java.awt.*;
+import java.awt.event.KeyEvent;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.*;
+import javax.swing.border.EmptyBorder;
+
+import com.jgoodies.forms.layout.ColumnSpec;
+import com.jgoodies.forms.layout.FormLayout;
+import com.jgoodies.forms.layout.FormSpecs;
+import com.jgoodies.forms.layout.RowSpec;
+import de.jClipCorn.database.databaseElement.columnTypes.CCSingleOnlineReference;
+import de.jClipCorn.gui.localization.LocaleBundle;
+import de.jClipCorn.gui.resources.Resources;
+import de.jClipCorn.util.datatypes.Tuple;
+
+public class ReferenceChooserDialog extends JDialog {
+ private static final long serialVersionUID = -3812579297074052719L;
+
+ private final JReferenceChooser parent;
+ private JSingleReferenceChooser chsrMain;
+ private List chsrAdd;
+
+ private JPanel pnlData;
+
+ public ReferenceChooserDialog(CCSingleOnlineReference dataMain, List dataAdditional, JReferenceChooser parent) {
+ super();
+
+ this.parent = parent;
+
+ initGUI();
+ updateControls(dataMain, dataAdditional);
+ setSize(380, Math.max(250, 165 + 32*dataAdditional.size()));
+
+
+ setLocationRelativeTo(parent);
+ }
+
+ private void initGUI() {
+ setTitle(LocaleBundle.getString("ReferenceChooserDialog.title")); //$NON-NLS-1$
+ setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+ setIconImage(Resources.IMG_FRAME_ICON.get());
+ setType(Type.UTILITY);
+ setMinimumSize(new Dimension(250, 200));
+ setModal(true);
+
+ getContentPane().setLayout(new BorderLayout());
+
+ JPanel pnlBase = new JPanel();
+ {
+ pnlBase.setBorder(new EmptyBorder(5, 5, 5, 5));
+ pnlBase.setLayout(new BorderLayout());
+ getContentPane().add(pnlBase, BorderLayout.CENTER);
+
+ JScrollPane pnlScroll = new JScrollPane();
+ {
+ pnlBase.add(pnlScroll, BorderLayout.CENTER);
+
+ pnlData = new JPanel();
+ {
+ pnlData.setLayout(new FormLayout());
+ pnlScroll.setViewportView(pnlData);
+ }
+ }
+
+ JPanel pnlOpt = new JPanel();
+ {
+ FlowLayout flowLayout;
+ pnlOpt.setLayout(flowLayout = new FlowLayout());
+ flowLayout.setAlignment(FlowLayout.RIGHT);
+ pnlBase.add(pnlOpt, BorderLayout.SOUTH);
+
+ JButton btnAppend = new JButton(LocaleBundle.getString("ReferenceChooserDialog.btnAppend")); //$NON-NLS-1$
+ btnAppend.addActionListener(e -> insertNewRef(chsrAdd.size()));
+ pnlOpt.add(btnAppend);
+ }
+ }
+
+ JPanel pnlBottom = new JPanel();
+ {
+ FlowLayout flowLayout;
+ pnlBottom.setLayout(flowLayout = new FlowLayout());
+ flowLayout.setAlignment(FlowLayout.RIGHT);
+ getContentPane().add(pnlBottom, BorderLayout.SOUTH);
+
+ JButton btnCancel = new JButton(LocaleBundle.getString("UIGeneric.btnCancel.text")); //$NON-NLS-1$
+ btnCancel.addActionListener(e -> { setVisible(false); dispose(); });
+ pnlBottom.add(btnCancel);
+
+ JButton btnOk = new JButton(LocaleBundle.getString("UIGeneric.btnOK.text")); //$NON-NLS-1$
+ btnOk.setFont(new Font(btnOk.getFont().getFontName(), Font.BOLD, btnOk.getFont().getSize()));
+ btnOk.addActionListener(e -> onOK());
+ pnlBottom.add(btnOk);
+ }
+
+ JRootPane root = getRootPane();
+ root.registerKeyboardAction(e -> { setVisible(false); dispose(); }, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);
+ }
+
+ private void updateControls(CCSingleOnlineReference dataMain, List dataAdditional) {
+ pnlData.removeAll();
+
+ ArrayList rspec = new ArrayList<>();
+ ArrayList cspec = new ArrayList<>();
+
+ cspec.add(ColumnSpec.decode("max(15dlu;default):grow")); //$NON-NLS-1$
+ cspec.add(FormSpecs.RELATED_GAP_COLSPEC);
+ cspec.add(ColumnSpec.decode("default")); //$NON-NLS-1$
+ cspec.add(ColumnSpec.decode("default")); //$NON-NLS-1$
+ cspec.add(ColumnSpec.decode("default")); //$NON-NLS-1$
+ cspec.add(ColumnSpec.decode("default")); //$NON-NLS-1$
+
+ rspec.add(RowSpec.decode("24px")); //$NON-NLS-1$
+ rspec.add(RowSpec.decode("5dlu")); //$NON-NLS-1$
+ for (int i = 0; i < dataAdditional.size(); i++) {
+ rspec.add(FormSpecs.RELATED_GAP_ROWSPEC);
+ rspec.add(RowSpec.decode("24px")); //$NON-NLS-1$
+ }
+ rspec.add(RowSpec.decode("default:grow")); //$NON-NLS-1$
+
+ pnlData.setLayout(new FormLayout(cspec.toArray(new ColumnSpec[0]), rspec.toArray(new RowSpec[0])));
+
+ chsrMain = new JSingleReferenceChooser();
+ chsrMain.setValue(dataMain);
+ pnlData.add(chsrMain, "1, 1, 6, 1, fill, fill"); //$NON-NLS-1$
+
+ chsrAdd = new ArrayList<>();
+
+ for (int i = 0; i < dataAdditional.size(); i++) {
+ final int fi = i;
+
+ JSingleSubReferenceChooser c = new JSingleSubReferenceChooser();
+ c.setValue(dataAdditional.get(i));
+ pnlData.add(c, "1, "+(4 + i*2)+", fill, fill"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ JButton btnUp = new JButton(Resources.ICN_GENERIC_BULLET_UP.get());
+ JButton btnDn = new JButton(Resources.ICN_GENERIC_BULLET_DOWN.get());
+ JButton btnIn = new JButton(Resources.ICN_GENERIC_BULLET_ADD.get());
+ JButton btnRm = new JButton(Resources.ICN_GENERIC_BULLET_REM.get());
+
+ pnlData.add(btnUp, "3, "+(4 + i*2)+", fill, fill"); //$NON-NLS-1$ //$NON-NLS-2$
+ pnlData.add(btnDn, "4, "+(4 + i*2)+", fill, fill"); //$NON-NLS-1$ //$NON-NLS-2$
+ pnlData.add(btnIn, "5, "+(4 + i*2)+", fill, fill"); //$NON-NLS-1$ //$NON-NLS-2$
+ pnlData.add(btnRm, "6, "+(4 + i*2)+", fill, fill"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ btnUp.addActionListener(e -> moveRefUp(fi));
+ btnDn.addActionListener(e -> moveRefDown(fi));
+ btnIn.addActionListener(e -> insertNewRef(fi));
+ btnRm.addActionListener(e -> removeRef(fi));
+
+ btnUp.setMargin(new Insets(0, 0, 0, 0));
+ btnDn.setMargin(new Insets(0, 0, 0, 0));
+ btnIn.setMargin(new Insets(0, 0, 0, 0));
+ btnRm.setMargin(new Insets(0, 0, 0, 0));
+
+ btnUp.setEnabled(i>0);
+ btnDn.setEnabled(i<(dataAdditional.size()-1));
+
+ chsrAdd.add(c);
+ }
+
+ validate();
+ pnlData.revalidate();
+
+ repaint();
+ pnlData.repaint();
+ }
+
+ private void onOK() {
+ Tuple> val = getActual();
+
+ List value = new ArrayList<>();
+ for (CCSingleOnlineReference soref : val.Item2)
+ {
+ if (soref == null) continue;
+ if (soref.isUnset()) continue;
+ if (soref.isInvalid()) continue;
+ value.add(soref);
+ }
+
+ parent.setMain(val.Item1);
+ parent.setAdditional(value);
+ dispose();
+ }
+
+ private Tuple> getActual() {
+ CCSingleOnlineReference m = chsrMain.getValue();
+
+ List l = new ArrayList<>();
+ for (JSingleSubReferenceChooser c : chsrAdd) l.add(c.getValue());
+
+ return Tuple.Create(m, l);
+ }
+
+ private void removeRef(int idx) {
+ Tuple> d = getActual();
+ d.Item2.remove(idx);
+ updateControls(d.Item1, d.Item2);
+ }
+
+ private void insertNewRef(int idx) {
+ Tuple> d = getActual();
+ if (idx == d.Item2.size()) d.Item2.add(CCSingleOnlineReference.createNone());
+ else d.Item2.add(idx+1, CCSingleOnlineReference.createNone());
+ updateControls(d.Item1, d.Item2);
+ }
+
+ private void moveRefDown(int idx) {
+ Tuple> d = getActual();
+ CCSingleOnlineReference r = d.Item2.remove(idx);
+ d.Item2.add(idx+1, r);
+ updateControls(d.Item1, d.Item2);
+ }
+
+ private void moveRefUp(int idx) {
+ Tuple> d = getActual();
+ CCSingleOnlineReference r = d.Item2.remove(idx);
+ d.Item2.add(idx-1, r);
+ updateControls(d.Item1, d.Item2);
+ }
+}
diff --git a/src/main/de/jClipCorn/gui/guiComponents/referenceChooser/ReferenceChooserPopup.java b/src/main/de/jClipCorn/gui/guiComponents/referenceChooser/ReferenceChooserPopup.java
index a041e7d8..5852f4b5 100644
--- a/src/main/de/jClipCorn/gui/guiComponents/referenceChooser/ReferenceChooserPopup.java
+++ b/src/main/de/jClipCorn/gui/guiComponents/referenceChooser/ReferenceChooserPopup.java
@@ -18,6 +18,10 @@
import de.jClipCorn.database.databaseElement.columnTypes.CCSingleOnlineReference;
import de.jClipCorn.gui.localization.LocaleBundle;
+import java.awt.FlowLayout;
+import java.awt.Insets;
+import java.awt.Component;
+import javax.swing.Box;
public class ReferenceChooserPopup extends JDialog implements WindowFocusListener {
private static final long serialVersionUID = 1286034649164678546L;
@@ -34,6 +38,9 @@ public class ReferenceChooserPopup extends JDialog implements WindowFocusListene
private JButton btnAdd;
private JButton btnOK;
private JPanel pnlBase;
+ private JPanel panel;
+ private JButton btnPopout;
+ private Component horizontalStrut;
public ReferenceChooserPopup(List data, JReferenceChooser parent) {
super();
@@ -72,16 +79,37 @@ private void initGUI(JReferenceChooser parent) {
pnlBase.add(pnllBottom, BorderLayout.SOUTH);
pnllBottom.setLayout(new BorderLayout(0, 0));
- btnAdd = new JButton("+"); //$NON-NLS-1$
- btnAdd.addActionListener(e -> onAdd());
- btnAdd.setMargin(new java.awt.Insets(1, 2, 1, 2));
- pnllBottom.add(btnAdd, BorderLayout.EAST);
-
btnOK = new JButton(LocaleBundle.getString("UIGeneric.btnOK.text")); //$NON-NLS-1$
btnOK.addActionListener(e -> onOK());
btnOK.setFont(new Font(btnOK.getFont().getFontName(), Font.BOLD, btnOK.getFont().getSize()));
pnllBottom.add(btnOK, BorderLayout.WEST);
+ panel = new JPanel();
+ FlowLayout flowLayout = (FlowLayout) panel.getLayout();
+ flowLayout.setVgap(0);
+ flowLayout.setHgap(0);
+ pnllBottom.add(panel, BorderLayout.EAST);
+
+ btnPopout = new JButton("..."); //$NON-NLS-1$
+ btnPopout.addActionListener(e ->
+ {
+ ReferenceChooserDialog dialog = new ReferenceChooserDialog(parent.getValue().Main, parent.getValue().Additional, parent);
+ dialog.setVisible(true);
+
+ dispose();
+ disposeInstance();
+ });
+ btnPopout.setMargin(new Insets(1, 2, 1, 2));
+ panel.add(btnPopout);
+
+ horizontalStrut = Box.createHorizontalStrut(20);
+ panel.add(horizontalStrut);
+
+ btnAdd = new JButton("+"); //$NON-NLS-1$
+ panel.add(btnAdd);
+ btnAdd.addActionListener(e -> onAdd());
+ btnAdd.setMargin(new java.awt.Insets(1, 2, 1, 2));
+
pnlScroll = new JScrollPane();
pnlScroll.getVerticalScrollBar().setUnitIncrement(16);
pnlBase.add(pnlScroll, BorderLayout.CENTER);
@@ -113,7 +141,7 @@ private void addSingleControl(CCSingleOnlineReference soref) {
uiList.add(chsr);
}
- public void updateHeight() {
+ private void updateHeight() {
pack();
if (uiList.isEmpty()) {
diff --git a/src/main/de/jClipCorn/gui/resources/Resources.java b/src/main/de/jClipCorn/gui/resources/Resources.java
index 90823a3b..a22d21c2 100644
--- a/src/main/de/jClipCorn/gui/resources/Resources.java
+++ b/src/main/de/jClipCorn/gui/resources/Resources.java
@@ -46,6 +46,11 @@ public class Resources {
public final static MultiSizeIconRef ICN_GENERIC_ORB_GREEN = registerMultisizeIcon("/icons/common/orb_green.png");
public final static MultiSizeIconRef ICN_GENERIC_ORB_YELLOW = registerMultisizeIcon("/icons/common/orb_yellow.png");
+ public final static IconRef ICN_GENERIC_BULLET_ADD = register16x16Icon("/icons/common/bullet_add.png");
+ public final static IconRef ICN_GENERIC_BULLET_REM = register16x16Icon("/icons/common/bullet_delete.png");
+ public final static IconRef ICN_GENERIC_BULLET_UP = register16x16Icon("/icons/common/bullet_arrow_up.png");
+ public final static IconRef ICN_GENERIC_BULLET_DOWN = register16x16Icon("/icons/common/bullet_arrow_down.png");
+
public final static MultiSizeIconRef ICN_TRANSPARENT = registerMultisizeIcon("/icons/common/void.png");
// ############################################# #############################################