Compare commits

..

No commits in common. "master" and "metadata" have entirely different histories.

20 changed files with 48 additions and 167 deletions

View file

@ -3,10 +3,6 @@
<classpathentry kind="src" path="source"/> <classpathentry kind="src" path="source"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="build"/> <classpathentry kind="lib" path="build"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/> <classpathentry kind="con" path="org.libreoffice.ide.eclipse.java.OOO_CONTAINER/LibreOffice 5.0"/>
<classpathentry kind="lib" path="miglayout15-swing.jar" sourcepath="miglayout-src.zip"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JSON"/>
<classpathentry kind="lib" path="json-20190722.jar"/>
<classpathentry kind="con" path="org.libreoffice.ide.eclipse.java.OOO_CONTAINER/LibreOffice 6.3 #1"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<projectDescription> <projectDescription>
<name>Metadata Editor</name> <name>StarterProject</name>
<comment></comment> <comment></comment>
<projects> <projects>
</projects> </projects>

View file

@ -1,5 +1,5 @@
#UNO project configuration file #UNO project configuration file
#Fri Apr 10 17:20:27 CEST 2020 #Thu Mar 19 15:58:57 CET 2020
project.srcdir=/source project.srcdir=/source
regclassname=pro.litvinovg.libreoffice.metadata.RegistrationHandler regclassname=pro.litvinovg.libreoffice.metadata.RegistrationHandler
javaversion=java5 javaversion=java5

View file

@ -1,20 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<description xmlns="http://openoffice.org/extensions/description/2006" xmlns:d="http://openoffice.org/extensions/description/2006" xmlns:xlink="http://www.w3.org/1999/xlink"> <description xmlns="http://openoffice.org/extensions/description/2006" xmlns:d="http://openoffice.org/extensions/description/2006" xmlns:xlink="http://www.w3.org/1999/xlink">
<version value="0.4.1"/> <version value="0.3.1"/>
<identifier value="pro.litvinovg.libreoffice.metadata"/> <identifier value="pro.litvinovg.libreoffice.metadata"/>
<update-information>
<src xlink:href="https://dev.litvinovg.pro/litvinovg/metadata-editor/-/raw/master/metadataeditor.update.xml"/>
</update-information>
<release-notes>
<src lang="en" xlink:href="releasenotes.txt"/>
</release-notes>
<display-name> <display-name>
<name lang="en">MetadataEditor</name> <name lang="en">MetadataEditor</name>
</display-name> </display-name>
<icon> <release-notes>
<default xlink:href="images/metadata.png"/> <src xlink:href="releasenotes.txt" lang="en" />
<high-contrast xlink:href="images/metadata.png"/> </release-notes>
</icon>
<extension-description> <extension-description>
<src lang="en" xlink:href="description/desc_en.txt"/> <src lang="en" xlink:href="description/desc_en.txt"/>
</extension-description> </extension-description>

BIN
images/actionOne_16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 501 B

BIN
images/actionOne_26.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 B

View file

@ -2,9 +2,9 @@
<description xmlns="http://openoffice.org/extensions/update/2006" <description xmlns="http://openoffice.org/extensions/update/2006"
xmlns:xlink="http://www.w3.org/1999/xlink"> xmlns:xlink="http://www.w3.org/1999/xlink">
<identifier value="pro.litvinovg.libreoffice.metadata"/> <identifier value="pro.litvinovg.libreoffice.metadata"/>
<version value="0.4.1" /> <version value="0.3.1" />
<update-download> <update-download>
<src xlink:href="https://dev.litvinovg.pro/litvinovg/metadata-editor/uploads/cc4bd54cbaf865b21ca4f6b7dbda2e7b/Metadata_Editor.oxt" /> <src xlink:href="https://dev.litvinovg.pro/litvinovg/metadata-editor/uploads/ffede5a74a84e212df07c50557d95af0/Metadata_Editor.oxt" />
</update-download> </update-download>
<release-notes> <release-notes>
<src xlink:href="https://dev.litvinovg.pro/litvinovg/metadata-editor/-/raw/master/releasenotes.txt" lang="en" /> <src xlink:href="https://dev.litvinovg.pro/litvinovg/metadata-editor/-/raw/master/releasenotes.txt" lang="en" />

View file

@ -1,3 +1,3 @@
#Written by the OOEclipseIntegration #Written by the OOEclipseIntegration
#Fri Apr 10 17:15:09 CEST 2020 #Thu Apr 07 11:36:27 CEST 2016
contents=description, description/desc_en.txt, releasenotes.txt, images, images/actionOne_16.png, images/actionOne_26.png, json-20190722.jar, registry, registry/org, registry/org/openoffice, registry/org/openoffice/Office, registry/org/openoffice/Office/Accelerators.xcu, registry/org/openoffice/Office/Addons.xcu, registry/org/openoffice/Office/UI, registry/org/openoffice/Office/UI/WriterWindowState.xcu contents=description, description/desc_en.txt, images, images/actionOne_16.png, images/actionOne_26.png, registry, registry/org, registry/org/openoffice, registry/org/openoffice/Office, registry/org/openoffice/Office/Accelerators.xcu, registry/org/openoffice/Office/Addons.xcu, registry/org/openoffice/Office/UI, registry/org/openoffice/Office/UI/WriterWindowState.xcu

View file

@ -1,4 +1,4 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<oor:component-data oor:package="org.openoffice.Office" oor:name="Addons" <oor:component-data oor:package="org.openoffice.Office" oor:name="Addons"
xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema"> xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<node oor:name="AddonUI"> <node oor:name="AddonUI">
@ -9,8 +9,11 @@
<value>service:pro.litvinovg.libreoffice.MetadataEditor?openGUI</value> <value>service:pro.litvinovg.libreoffice.MetadataEditor?openGUI</value>
</prop> </prop>
<node oor:name="UserDefinedImages"> <node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL"> <prop oor:name="ImageSmallURL">
<value>vnd.sun.star.extension://pro.litvinovg.libreoffice.metadata/images/metadata.png</value> <value>vnd.sun.star.extension://pro.litvinovg.libreoffice.metadata/images/actionOne_16.png</value>
</prop>
<prop oor:name="ImageBigURL">
<value>vnd.sun.star.extension://pro.litvinovg.libreoffice.metadata/images/actionOne_26.png</value>
</prop> </prop>
</node> </node>
</node> </node>

View file

@ -1,5 +1,7 @@
package pro.litvinovg.libreoffice.metadata; package pro.litvinovg.libreoffice.metadata;
import java.io.Serializable;
public class MetadataElement { public class MetadataElement {
private String name; private String name;
@ -18,4 +20,5 @@ public class MetadataElement {
return value; return value;
} }
} }

View file

@ -2,7 +2,6 @@ package pro.litvinovg.libreoffice.metadata;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.Set;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
@ -67,15 +66,12 @@ public class OutlineElement {
public void readMetadata(String data) { public void readMetadata(String data) {
try { try {
JSONObject json = new JSONObject(data); JSONObject json = new JSONObject(data);
Set<String> nums = json.keySet(); Iterator<String> names = json.keys();
for (String number : nums) { while (names.hasNext()) {
JSONObject meta = (JSONObject) json.get(number); String metaName = names.next();
Set<String> names = meta.keySet(); String metaValue = (String) json.get(metaName);
for (String name: names) { metadata.add(new MetadataElement(metaName, metaValue));
String value = meta.getString(name); }
metadata.add(new MetadataElement(name, value));
}
}
} catch (JSONException e) { } catch (JSONException e) {
e.printStackTrace(); e.printStackTrace();
} catch (Exception e) { } catch (Exception e) {
@ -85,15 +81,11 @@ public class OutlineElement {
private String metadataToString() { private String metadataToString() {
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
Integer i = 0;
for (MetadataElement element : metadata) { for (MetadataElement element : metadata) {
String name = element.getName(); String name = element.getName();
String value = element.getValue(); String value = element.getValue();
if (!name.isEmpty() && !value.isEmpty()) { if (!name.isEmpty() && !value.isEmpty()) {
JSONObject meta = new JSONObject(); json.put(element.getName(), element.getValue());
meta.put(element.getName(), element.getValue());
json.put(i.toString(), meta);
i++;
} }
} }
return json.toString(); return json.toString();

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View file

@ -46,8 +46,6 @@ import java.awt.event.FocusEvent;
import javax.swing.JToggleButton; import javax.swing.JToggleButton;
import javax.swing.LayoutStyle.ComponentPlacement; import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.JLabel; import javax.swing.JLabel;
import javax.swing.ScrollPaneConstants;
import java.awt.Dimension;
public class EditorGUI extends JFrame { public class EditorGUI extends JFrame {
//Components //Components
@ -184,16 +182,17 @@ public class EditorGUI extends JFrame {
panelStandardMetadata = new JPanel(); panelStandardMetadata = new JPanel();
tabbedPane.addTab("Метаданные либры", null, panelStandardMetadata, null); tabbedPane.addTab("Метаданные либры", null, panelStandardMetadata, null);
tabbedPane.setEnabledAt(0, true); tabbedPane.setEnabledAt(0, true);
/*
* if (true) { addMetadataTab(new OutlineElement(null, "Тестовое название")); }
*/
for (OutlineElement element : outline) { for (OutlineElement element : outline) {
addMetadataTab(element); addMetadataTab(element);
} }
createDocPropsModel(); createDocPropsModel();
createCustomDocPropsModel(); createCustomDocPropsModel();
tableDocStandard = new MetadataTable(); tableDocStandard = new JTable();
tableDocCustom = new MetadataTable(); tableDocCustom = new JTable();
configureTableDocStandard(); configureTableDocStandard();
configureTableDocCustom(); configureTableDocCustom();
@ -219,8 +218,10 @@ public class EditorGUI extends JFrame {
private void addMetadataTab(OutlineElement element) { private void addMetadataTab(OutlineElement element) {
JPanel panelOutline = new JPanel(); JPanel panelOutline = new JPanel();
JTable tableOutline = new JTable();
MetadataTableModel outlineTableModel = createOutlineTableModel(element); MetadataTableModel outlineTableModel = createOutlineTableModel(element);
tableModels.add(outlineTableModel); tableModels.add(outlineTableModel);
configureTableOutline(tableOutline, outlineTableModel);
JButton btnOutlineSave = new JButton("Сохранить"); JButton btnOutlineSave = new JButton("Сохранить");
btnOutlineSave.addActionListener(new ActionListener() { btnOutlineSave.addActionListener(new ActionListener() {
@ -229,41 +230,27 @@ public class EditorGUI extends JFrame {
} }
}); });
JScrollPane scrollPane = new JScrollPane();
scrollPane.setSize(new Dimension(50, 50));
JButton btnOutlineSave_1 = new JButton("Закрыть");
GroupLayout groupLayoutOutlineMetadata = new GroupLayout(panelOutline); GroupLayout groupLayoutOutlineMetadata = new GroupLayout(panelOutline);
groupLayoutOutlineMetadata.setHorizontalGroup( groupLayoutOutlineMetadata.setHorizontalGroup(
groupLayoutOutlineMetadata.createParallelGroup(Alignment.LEADING) groupLayoutOutlineMetadata.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayoutOutlineMetadata.createSequentialGroup()
.addGap(34)
.addComponent(tableOutline, GroupLayout.DEFAULT_SIZE, 839, Short.MAX_VALUE)
.addGap(126))
.addGroup(Alignment.TRAILING, groupLayoutOutlineMetadata.createSequentialGroup() .addGroup(Alignment.TRAILING, groupLayoutOutlineMetadata.createSequentialGroup()
.addGroup(groupLayoutOutlineMetadata.createParallelGroup(Alignment.TRAILING) .addContainerGap(748, Short.MAX_VALUE)
.addGroup(groupLayoutOutlineMetadata.createSequentialGroup() .addComponent(btnOutlineSave)
.addContainerGap(557, Short.MAX_VALUE) .addGap(134))
.addComponent(btnOutlineSave_1, GroupLayout.PREFERRED_SIZE, 108, GroupLayout.PREFERRED_SIZE)
.addGap(104)
.addComponent(btnOutlineSave)
.addGap(32))
.addGroup(groupLayoutOutlineMetadata.createSequentialGroup()
.addGap(45)
.addComponent(scrollPane, GroupLayout.DEFAULT_SIZE, 864, Short.MAX_VALUE)))
.addGap(90))
); );
groupLayoutOutlineMetadata.setVerticalGroup( groupLayoutOutlineMetadata.setVerticalGroup(
groupLayoutOutlineMetadata.createParallelGroup(Alignment.LEADING) groupLayoutOutlineMetadata.createParallelGroup(Alignment.LEADING)
.addGroup(Alignment.TRAILING, groupLayoutOutlineMetadata.createSequentialGroup() .addGroup(groupLayoutOutlineMetadata.createSequentialGroup()
.addContainerGap() .addGap(85)
.addComponent(scrollPane, GroupLayout.DEFAULT_SIZE, 600, Short.MAX_VALUE) .addComponent(tableOutline, GroupLayout.DEFAULT_SIZE, 497, Short.MAX_VALUE)
.addGap(31) .addGap(52)
.addGroup(groupLayoutOutlineMetadata.createParallelGroup(Alignment.BASELINE) .addComponent(btnOutlineSave)
.addComponent(btnOutlineSave_1) .addGap(43))
.addComponent(btnOutlineSave))
.addGap(34))
); );
JTable tableOutline = new MetadataTable();
scrollPane.setViewportView(tableOutline);
configureTableOutline(tableOutline, outlineTableModel);
JPopupMenu popupMenu = new JPopupMenu(); JPopupMenu popupMenu = new JPopupMenu();
addPopup(tableOutline, popupMenu); addPopup(tableOutline, popupMenu);
@ -288,7 +275,7 @@ public class EditorGUI extends JFrame {
} }
private void configureWindow() { private void configureWindow() {
setIconImage(Toolkit.getDefaultToolkit().getImage(EditorGUI.class.getResource("/pro/litvinovg/libreoffice/metadata/resources/metadata.png"))); setIconImage(Toolkit.getDefaultToolkit().getImage(EditorGUI.class.getResource("/pro/litvinovg/libreoffice/metadata/resources/webcam.png")));
setTitle("Редактор метаданных"); setTitle("Редактор метаданных");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 1170, 755); setBounds(100, 100, 1170, 755);

View file

@ -1,50 +0,0 @@
package pro.litvinovg.libreoffice.metadata.views;
import java.awt.Component;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.AbstractCellEditor;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.table.TableCellEditor;
public class MetadataCellEditor extends AbstractCellEditor implements TableCellEditor {
JTextArea comp = new JTextArea();
JTable table;
int row;
public MetadataCellEditor() {
comp.setLineWrap(true);
comp.setWrapStyleWord(true);
comp.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
super.componentResized(e);
table.setRowHeight(row, (int) (comp.getPreferredSize().getHeight()));
}
});
comp.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
super.keyTyped(e);
table.setRowHeight(row, (int) (comp.getPreferredSize().getHeight()));
}
});
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
this.table = table;
this.row = row;
comp.setText((String) value);
comp.setFont(table.getFont());
return comp;
}
public Object getCellEditorValue() {
return comp.getText();
}
}

View file

@ -1,20 +0,0 @@
package pro.litvinovg.libreoffice.metadata.views;
import javax.swing.DefaultCellEditor;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
public class MetadataTable extends JTable {
public TableCellRenderer getCellRenderer(int row, int col) {
return new MetadataTableRenderer();
}
public TableCellEditor getCellEditor(int row, int col) {
return new MetadataCellEditor();
}
}

View file

@ -1,23 +0,0 @@
package pro.litvinovg.libreoffice.metadata.views;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.table.TableCellRenderer;
public class MetadataTableRenderer extends JTextArea implements TableCellRenderer{
private static final long serialVersionUID = 1L;
public MetadataTableRenderer() {
setOpaque(true);
setLineWrap(true);
setWrapStyleWord(true);
}
public Component getTableCellRendererComponent(JTable table,Object value,
boolean isSelected, boolean hasFocus, int row,int column) {
this.setText(value == null ? "" : value.toString());
return this;
}
}