Neue Icons hinzugefügt, Anleitung weiter geschrieben

This commit is contained in:
2023-07-21 12:53:42 +02:00
parent 139f2ea865
commit 72b8cc562f
6 changed files with 537 additions and 46 deletions

View File

@@ -9,6 +9,7 @@ import org.slf4j.LoggerFactory;
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.MatteBorder;
import java.awt.*;
import java.awt.event.ActionListener;
@@ -21,6 +22,11 @@ import java.util.List;
import java.util.Optional;
import static de.srsoftware.belegscanner.Application.t;
import static java.awt.Color.black;
import static javax.swing.BorderFactory.createCompoundBorder;
import static javax.swing.BorderFactory.createEmptyBorder;
import static javax.swing.BorderFactory.createLineBorder;
import static javax.swing.BorderFactory.createMatteBorder;
/**
*
@@ -29,13 +35,15 @@ import static de.srsoftware.belegscanner.Application.t;
*
*/
public class DocTable extends JPanel{
private static final Border BOTTOM_LINE = createMatteBorder(0, 0, 1, 0, black);
private static final Border IMAGE_BUTTON = createCompoundBorder(createLineBorder(black),createEmptyBorder(5,5,5,5));
private static final Logger LOG = LoggerFactory.getLogger(DocTable.class);
private static final int IMAGE_HEIGHT = 32;
private static FilenameFilter PAGES = (dir,name) -> name.toLowerCase().endsWith("pdf") && name.toLowerCase().contains("page");
private static int rowCounter = 0;
private static Font btnFont = new Font("Arial", Font.PLAIN, 28);
private final Worker worker;
private Image openDir, joinFiles,preview;
private Image openDir, joinFiles,preview,finish,trash;
private List<Project> projects = new ArrayList<>();
@@ -69,8 +77,8 @@ public class DocTable extends JPanel{
buttons.add(button(openDir,t("open folder"),ev -> project.openDir()));
buttons.add(joinButton = button(joinFiles,t("join PDFs"),ev -> worker.join(project)));
buttons.add(button(preview,t("display preview"),ev -> worker.preview(project.lastPage())));
buttons.add(button("",t("done"),ev -> drop(this)));
buttons.add(button("",t("drop last page"),ev -> worker.preview(project.dropLastPage().lastPage())));
buttons.add(button(trash,t("drop last page"),ev -> worker.preview(project.dropLastPage().lastPage())));
buttons.add(button(finish,t("done"),ev -> drop(this)));
constraints.gridx = 2;
add(buttons,constraints);
@@ -122,51 +130,36 @@ public class DocTable extends JPanel{
constraints.insets = new Insets(3, 10, 3, 10);
constraints.gridy = 0;
constraints.gridx = 0;
MatteBorder border = BorderFactory.createMatteBorder(0, 0, 1, 0, Color.black);
JLabel ordner = new JLabel(t("Directory"),SwingConstants.CENTER);
ordner.setBorder(border);
ordner.setBorder(BOTTOM_LINE);
add(ordner,constraints);
constraints.gridx = 1;
JLabel status = new JLabel(t("State"),SwingConstants.CENTER);
status.setBorder(border);
status.setBorder(BOTTOM_LINE);
add(status,constraints);
constraints.gridx = 2;
JLabel actions = new JLabel(t("Actions"),SwingConstants.CENTER);
actions.setBorder(border);
actions.setBorder(BOTTOM_LINE);
add(actions,constraints);
try {
openDir = ImageIO.read(getClass().getResource("/img/open-dir.png")).getScaledInstance(41,32,Image.SCALE_SMOOTH);
} catch (IOException e) {
openDir = null;
}
try {
joinFiles = ImageIO.read(getClass().getResource("/img/join.png")).getScaledInstance(32,32,Image.SCALE_SMOOTH);
} catch (IOException e) {
joinFiles = null;
}
try {
preview = ImageIO.read(getClass().getResource("/img/preview.png")).getScaledInstance(32,32,Image.SCALE_SMOOTH);
} catch (IOException e) {
preview = null;
}
openDir = load("open-dir.png").orElse(null);
joinFiles = load("join.png").orElse(null);
preview = load("preview.png").orElse(null);
finish = load("finish.png").orElse(null);
trash = load("trash.png").orElse(null);
}
/**
* helper method to create a button with given label, tooltip and action listener
* @param label
* @param tooltip
* @param listener
* @return
*/
private static JButton button(String label, String tooltip, ActionListener listener) {
JButton btn = new JButton(label);
btn.setFont(btnFont);
btn.setToolTipText(tooltip);
btn.addActionListener(listener);
return btn;
private static Optional<Image> load(String name){
try {
var path = String.join("/","","img",name);
BufferedImage large = ImageIO.read(DocTable.class.getResource(path));
double height = large.getHeight();
var width = large.getWidth();
double factor = IMAGE_HEIGHT / height;
return Optional.of(large.getScaledInstance((int)(width*factor),IMAGE_HEIGHT,Image.SCALE_SMOOTH));
} catch (IOException e) {
return Optional.empty();
}
}
private static JButton button(Image image, String tooltip, ActionListener listener) {
@@ -174,6 +167,7 @@ public class DocTable extends JPanel{
if (image != null) btn.setIcon(new ImageIcon(image));
btn.setToolTipText(tooltip);
btn.addActionListener(listener);
btn.setBorder(IMAGE_BUTTON);
return btn;
}

View File

@@ -0,0 +1,374 @@
<?xml version="1.0" encoding="UTF-8"?>
<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
<dia:diagramdata>
<dia:attribute name="background">
<dia:color val="#ffffffff"/>
</dia:attribute>
<dia:attribute name="pagebreak">
<dia:color val="#000099ff"/>
</dia:attribute>
<dia:attribute name="paper">
<dia:composite type="paper">
<dia:attribute name="name">
<dia:string>#A4#</dia:string>
</dia:attribute>
<dia:attribute name="tmargin">
<dia:real val="2.8222000598907471"/>
</dia:attribute>
<dia:attribute name="bmargin">
<dia:real val="2.8222000598907471"/>
</dia:attribute>
<dia:attribute name="lmargin">
<dia:real val="2.8222000598907471"/>
</dia:attribute>
<dia:attribute name="rmargin">
<dia:real val="2.8222000598907471"/>
</dia:attribute>
<dia:attribute name="is_portrait">
<dia:boolean val="true"/>
</dia:attribute>
<dia:attribute name="scaling">
<dia:real val="1"/>
</dia:attribute>
<dia:attribute name="fitto">
<dia:boolean val="false"/>
</dia:attribute>
</dia:composite>
</dia:attribute>
<dia:attribute name="grid">
<dia:composite type="grid">
<dia:attribute name="dynamic">
<dia:boolean val="true"/>
</dia:attribute>
<dia:attribute name="width_x">
<dia:real val="1"/>
</dia:attribute>
<dia:attribute name="width_y">
<dia:real val="1"/>
</dia:attribute>
<dia:attribute name="visible_x">
<dia:int val="1"/>
</dia:attribute>
<dia:attribute name="visible_y">
<dia:int val="1"/>
</dia:attribute>
<dia:composite type="color"/>
</dia:composite>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#d8e5e5ff"/>
</dia:attribute>
<dia:attribute name="guides">
<dia:composite type="guides">
<dia:attribute name="hguides"/>
<dia:attribute name="vguides"/>
</dia:composite>
</dia:attribute>
<dia:attribute name="display">
<dia:composite type="display">
<dia:attribute name="antialiased">
<dia:boolean val="false"/>
</dia:attribute>
<dia:attribute name="snap-to-grid">
<dia:boolean val="true"/>
</dia:attribute>
<dia:attribute name="snap-to-object">
<dia:boolean val="true"/>
</dia:attribute>
<dia:attribute name="show-grid">
<dia:boolean val="true"/>
</dia:attribute>
<dia:attribute name="show-connection-points">
<dia:boolean val="true"/>
</dia:attribute>
</dia:composite>
</dia:attribute>
</dia:diagramdata>
<dia:layer name="Hintergrund" visible="true" connectable="true" active="true">
<dia:object type="Flowchart - Ellipse" version="0" id="O0">
<dia:attribute name="obj_pos">
<dia:point val="15,26"/>
</dia:attribute>
<dia:attribute name="obj_bb">
<dia:rectangle val="14.9,25.9;25.1,30.1"/>
</dia:attribute>
<dia:attribute name="elem_corner">
<dia:point val="15,26"/>
</dia:attribute>
<dia:attribute name="elem_width">
<dia:real val="9.9999999999999982"/>
</dia:attribute>
<dia:attribute name="elem_height">
<dia:real val="4"/>
</dia:attribute>
<dia:attribute name="border_width">
<dia:real val="0.20000000298023224"/>
</dia:attribute>
<dia:attribute name="inner_color">
<dia:color val="#e5e5e5ff"/>
</dia:attribute>
<dia:attribute name="show_background">
<dia:boolean val="true"/>
</dia:attribute>
<dia:attribute name="padding">
<dia:real val="0.35355339059327379"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
<dia:attribute name="string">
<dia:string>##</dia:string>
</dia:attribute>
<dia:attribute name="font">
<dia:font family="sans" style="0" name="Helvetica"/>
</dia:attribute>
<dia:attribute name="height">
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
<dia:point val="20,28.1941"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#ff0000ff"/>
</dia:attribute>
<dia:attribute name="alignment">
<dia:enum val="1"/>
</dia:attribute>
</dia:composite>
</dia:attribute>
</dia:object>
<dia:object type="Flowchart - Box" version="0" id="O1">
<dia:attribute name="obj_pos">
<dia:point val="15,23"/>
</dia:attribute>
<dia:attribute name="obj_bb">
<dia:rectangle val="14.9,22.9;25.1,28.1"/>
</dia:attribute>
<dia:attribute name="elem_corner">
<dia:point val="15,23"/>
</dia:attribute>
<dia:attribute name="elem_width">
<dia:real val="10"/>
</dia:attribute>
<dia:attribute name="elem_height">
<dia:real val="5"/>
</dia:attribute>
<dia:attribute name="border_width">
<dia:real val="0.20000000298023224"/>
</dia:attribute>
<dia:attribute name="border_color">
<dia:color val="#e5e5e5ff"/>
</dia:attribute>
<dia:attribute name="inner_color">
<dia:color val="#e5e5e5ff"/>
</dia:attribute>
<dia:attribute name="show_background">
<dia:boolean val="true"/>
</dia:attribute>
<dia:attribute name="padding">
<dia:real val="0.5"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
<dia:attribute name="string">
<dia:string>##</dia:string>
</dia:attribute>
<dia:attribute name="font">
<dia:font family="sans" style="0" name="Helvetica"/>
</dia:attribute>
<dia:attribute name="height">
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
<dia:point val="20,25.6941"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000ff"/>
</dia:attribute>
<dia:attribute name="alignment">
<dia:enum val="1"/>
</dia:attribute>
</dia:composite>
</dia:attribute>
</dia:object>
<dia:object type="Flowchart - Ellipse" version="0" id="O2">
<dia:attribute name="obj_pos">
<dia:point val="15,21"/>
</dia:attribute>
<dia:attribute name="obj_bb">
<dia:rectangle val="14.9,20.9;25.1,25.1"/>
</dia:attribute>
<dia:attribute name="elem_corner">
<dia:point val="15,21"/>
</dia:attribute>
<dia:attribute name="elem_width">
<dia:real val="9.9999999999999982"/>
</dia:attribute>
<dia:attribute name="elem_height">
<dia:real val="4"/>
</dia:attribute>
<dia:attribute name="border_width">
<dia:real val="0.20000000298023224"/>
</dia:attribute>
<dia:attribute name="inner_color">
<dia:color val="#cbd0deff"/>
</dia:attribute>
<dia:attribute name="show_background">
<dia:boolean val="true"/>
</dia:attribute>
<dia:attribute name="padding">
<dia:real val="0.35355339059327379"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
<dia:attribute name="string">
<dia:string>##</dia:string>
</dia:attribute>
<dia:attribute name="font">
<dia:font family="sans" style="0" name="Helvetica"/>
</dia:attribute>
<dia:attribute name="height">
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
<dia:point val="20,23.1941"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#ff0000ff"/>
</dia:attribute>
<dia:attribute name="alignment">
<dia:enum val="1"/>
</dia:attribute>
</dia:composite>
</dia:attribute>
</dia:object>
<dia:object type="Flowchart - Parallelogram" version="0" id="O3">
<dia:attribute name="obj_pos">
<dia:point val="17,19"/>
</dia:attribute>
<dia:attribute name="obj_bb">
<dia:rectangle val="16.9,18.9;23.1,24.1"/>
</dia:attribute>
<dia:attribute name="elem_corner">
<dia:point val="17,19"/>
</dia:attribute>
<dia:attribute name="elem_width">
<dia:real val="6"/>
</dia:attribute>
<dia:attribute name="elem_height">
<dia:real val="5"/>
</dia:attribute>
<dia:attribute name="border_width">
<dia:real val="0.20000000298023224"/>
</dia:attribute>
<dia:attribute name="inner_color">
<dia:color val="#800080ff"/>
</dia:attribute>
<dia:attribute name="show_background">
<dia:boolean val="true"/>
</dia:attribute>
<dia:attribute name="shear_angle">
<dia:real val="70"/>
</dia:attribute>
<dia:attribute name="padding">
<dia:real val="0.5"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
<dia:attribute name="string">
<dia:string>##</dia:string>
</dia:attribute>
<dia:attribute name="font">
<dia:font family="sans" style="0" name="Helvetica"/>
</dia:attribute>
<dia:attribute name="height">
<dia:real val="0.80000000000000004"/>
</dia:attribute>
<dia:attribute name="pos">
<dia:point val="20,21.6941"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000ff"/>
</dia:attribute>
<dia:attribute name="alignment">
<dia:enum val="1"/>
</dia:attribute>
</dia:composite>
</dia:attribute>
</dia:object>
<dia:object type="Standard - Line" version="0" id="O4">
<dia:attribute name="obj_pos">
<dia:point val="15,23"/>
</dia:attribute>
<dia:attribute name="obj_bb">
<dia:rectangle val="14.9,22.9;15.1,28.1"/>
</dia:attribute>
<dia:attribute name="conn_endpoints">
<dia:point val="15,23"/>
<dia:point val="15,28"/>
</dia:attribute>
<dia:attribute name="numcp">
<dia:int val="1"/>
</dia:attribute>
<dia:attribute name="line_width">
<dia:real val="0.20000000298023224"/>
</dia:attribute>
<dia:connections>
<dia:connection handle="0" to="O1" connection="0"/>
<dia:connection handle="1" to="O0" connection="8"/>
</dia:connections>
</dia:object>
<dia:object type="Standard - Line" version="0" id="O5">
<dia:attribute name="obj_pos">
<dia:point val="25,23"/>
</dia:attribute>
<dia:attribute name="obj_bb">
<dia:rectangle val="24.9,22.9;25.1,28.1"/>
</dia:attribute>
<dia:attribute name="conn_endpoints">
<dia:point val="25,23"/>
<dia:point val="25,28"/>
</dia:attribute>
<dia:attribute name="numcp">
<dia:int val="1"/>
</dia:attribute>
<dia:attribute name="line_width">
<dia:real val="0.20000000298023224"/>
</dia:attribute>
<dia:connections>
<dia:connection handle="0" to="O1" connection="4"/>
<dia:connection handle="1" to="O0" connection="0"/>
</dia:connections>
</dia:object>
<dia:object type="Standard - Polygon" version="0" id="O6">
<dia:attribute name="obj_pos">
<dia:point val="19,25.495"/>
</dia:attribute>
<dia:attribute name="obj_bb">
<dia:rectangle val="17.9293,25.4243;22.0707,29.5657"/>
</dia:attribute>
<dia:attribute name="poly_points">
<dia:point val="19,25.495"/>
<dia:point val="20,26.495"/>
<dia:point val="21,25.495"/>
<dia:point val="22,26.495"/>
<dia:point val="21,27.495"/>
<dia:point val="22,28.495"/>
<dia:point val="21,29.495"/>
<dia:point val="20,28.495"/>
<dia:point val="19,29.495"/>
<dia:point val="18,28.495"/>
<dia:point val="19,27.495"/>
<dia:point val="18,26.495"/>
</dia:attribute>
<dia:attribute name="line_color">
<dia:color val="#ff0000ff"/>
</dia:attribute>
<dia:attribute name="inner_color">
<dia:color val="#ff0000ff"/>
</dia:attribute>
<dia:attribute name="show_background">
<dia:boolean val="true"/>
</dia:attribute>
</dia:object>
</dia:layer>
</dia:diagram>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -15,6 +15,7 @@ Directory : Ordner
display preview : Vorschau anzeigen
drop file : Datei löschen
done : fertig
drop last page : letzte Seite verwerfen
Error code\: {} for {} : Fehlercode: {} für {}
February : Februar
File "{}" does already exist and would be overwritten. Continue? : Die Datei „{}“ existiert bereits. Soll sie überschrieben werden?
@@ -25,7 +26,7 @@ help : Hilfe
Improve brightness : Helligkeit verbessern
January : Januar
Joining PDFs… : Verbinde PDFs…
join PDFs : PDFs zusammenführen
join PDFs : PDFs binden
July : Juli
Language support : Sprach-Unterstützung
May : Mai