2 * Rozšířené atributy – program na správu rozšířených atributů souborů
3 * Copyright © 2012 František Kučera (frantovo.cz)
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 package cz.frantovo.rozsireneatributy;
19 import cz.frantovo.rozsireneatributy.gui.Model;
20 import cz.frantovo.rozsireneatributy.gui.Panel;
21 import java.awt.BorderLayout;
22 import java.awt.event.ActionEvent;
23 import java.awt.event.ActionListener;
24 import java.awt.event.KeyEvent;
26 import java.text.MessageFormat;
27 import java.util.ResourceBundle;
28 import java.util.logging.Level;
29 import java.util.logging.Logger;
30 import javax.swing.JComponent;
31 import javax.swing.JFrame;
32 import javax.swing.JOptionPane;
33 import javax.swing.KeyStroke;
38 * http://freedesktop.org/wiki/CommonExtendedAttributes
39 * http://download.oracle.com/javase/tutorial/essential/io/fileAttr.html#user
40 * http://today.java.net/pub/a/today/2008/07/03/jsr-203-new-file-apis.html
41 * #so-what-is-a-path-really
43 * $ setfattr -n "user.franta.pozdrav" -v 'Dobrý den!' pokus.txt (v javě pak
44 * pracujeme s klíči bez předpony „user.“)
46 * @author Ing. František Kučera (frantovo.cz)
48 public class Startér {
50 private static final Logger log = Logger
51 .getLogger(Startér.class.getSimpleName());
52 private static final ResourceBundle překlady = ResourceBundle
53 .getBundle(Atribut.class.getPackageName() + ".Překlady");
56 * @param args název souboru
58 public static void main(String[] args) {
61 // TODO: načítat konfiguraci i z XML souboru
62 CLIParser parser = new CLIParser();
63 Konfigurace konfigurace = parser.parsujParametry(args);
65 File soubor = konfigurace.getSoubor();
67 if (soubor.exists()) {
68 log.log(Level.INFO, "Pracuji se souborem: {0}", soubor);
70 Model model = new Model(konfigurace);
72 final JFrame f = new JFrame();
73 Panel p = new Panel(model);
75 f.setLayout(new BorderLayout());
76 f.add(p, BorderLayout.CENTER);
78 // Ukončení programu klávesou Escape:
79 f.getRootPane().registerKeyboardAction(new ActionListener() {
82 public void actionPerformed(ActionEvent ae) {
86 KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
87 JComponent.WHEN_IN_FOCUSED_WINDOW);
89 f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
90 f.setTitle(MessageFormat
91 .format(překlady.getString("titulek"), soubor));
93 f.setLocationRelativeTo(null);
96 ukončiChybou(MessageFormat.format(překlady
97 .getString("chyba.souborNeexistuje"), soubor));
99 } catch (Exception e) {
100 log.log(Level.SEVERE, překlady.getString("chyba"), e);
101 ukončiChybou(e.getLocalizedMessage());
105 private static void ukončiChybou(String hláška) {
106 log.log(Level.SEVERE, hláška);
107 JOptionPane.showMessageDialog(null, hláška, překlady
108 .getString("chyba.titulek"), JOptionPane.ERROR_MESSAGE);