franta-hg@4: package cz.frantovo.rozsireneAtributy; franta-hg@4: franta-hg@13: import cz.frantovo.rozsireneAtributy.gui.Model; franta-hg@6: import cz.frantovo.rozsireneAtributy.gui.Panel; franta-hg@6: import java.awt.BorderLayout; franta-hg@11: import java.awt.event.ActionEvent; franta-hg@11: import java.awt.event.ActionListener; franta-hg@11: import java.awt.event.KeyEvent; franta-hg@6: import java.io.File; franta-hg@6: import java.io.IOException; franta-hg@15: import java.text.MessageFormat; franta-hg@15: import java.util.ResourceBundle; franta-hg@6: import java.util.logging.Level; franta-hg@6: import java.util.logging.Logger; franta-hg@11: import javax.swing.JComponent; franta-hg@6: import javax.swing.JFrame; franta-hg@7: import javax.swing.JOptionPane; franta-hg@11: import javax.swing.KeyStroke; franta-hg@6: franta-hg@4: /** franta-hg@4: * Spouštěč programu franta-hg@6: * franta-hg@6: * http://freedesktop.org/wiki/CommonExtendedAttributes franta-hg@6: * http://download.oracle.com/javase/tutorial/essential/io/fileAttr.html#user franta-hg@6: * http://today.java.net/pub/a/today/2008/07/03/jsr-203-new-file-apis.html#so-what-is-a-path-really franta-hg@6: * franta-hg@6: * $ setfattr -n "user.fiki.pozdrav" -v 'Dobrý den!' pokus.txt franta-hg@6: * (v javě pak pracujeme s klíči bez předpony „user.“) franta-hg@6: * franta-hg@4: * @author fiki franta-hg@4: */ franta-hg@5: public class Startér { franta-hg@4: franta-hg@6: private static final Logger log = Logger.getLogger(Startér.class.getSimpleName()); franta-hg@15: private static final ResourceBundle překlady = ResourceBundle.getBundle("cz.frantovo.rozsireneAtributy.Překlady"); franta-hg@6: franta-hg@8: /** franta-hg@8: * @param args název souboru franta-hg@8: * @throws IOException TODO: ošetřit výjimku franta-hg@8: */ franta-hg@6: public static void main(String[] args) throws IOException { franta-hg@6: franta-hg@15: franta-hg@7: if (args.length == 1 && args[0].length() > 0) { franta-hg@6: File soubor = new File(args[0]); franta-hg@6: franta-hg@7: if (soubor.exists()) { franta-hg@7: log.log(Level.INFO, "Pracuji se souborem: {0}", soubor); franta-hg@6: franta-hg@7: Model model = new Model(soubor); franta-hg@6: franta-hg@11: final JFrame f = new JFrame(); franta-hg@7: Panel p = new Panel(model); franta-hg@6: franta-hg@7: f.setLayout(new BorderLayout()); franta-hg@7: f.add(p, BorderLayout.CENTER); franta-hg@6: franta-hg@11: /** Ukončení programu klávesou Escape */ franta-hg@11: f.getRootPane().registerKeyboardAction(new ActionListener() { franta-hg@11: franta-hg@11: public void actionPerformed(ActionEvent ae) { franta-hg@11: f.dispose(); franta-hg@11: } franta-hg@11: }, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); franta-hg@11: franta-hg@8: f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); franta-hg@15: f.setTitle(MessageFormat.format(překlady.getString("titulek"), soubor)); franta-hg@7: f.setSize(640, 240); franta-hg@7: f.setLocationRelativeTo(null); franta-hg@7: f.setVisible(true); franta-hg@7: } else { franta-hg@15: ukončiChybou(MessageFormat.format(překlady.getString("chyba.souborNeexistuje"), soubor)); franta-hg@7: } franta-hg@6: } else { franta-hg@15: ukončiChybou(překlady.getString("chyba.chybíParametr")); franta-hg@6: } franta-hg@4: } franta-hg@7: franta-hg@7: private static void ukončiChybou(String hláška) { franta-hg@7: log.log(Level.SEVERE, hláška); franta-hg@15: JOptionPane.showMessageDialog(null, hláška, překlady.getString("chyba.titulek"), JOptionPane.ERROR_MESSAGE); franta-hg@7: System.exit(1); franta-hg@7: } franta-hg@4: }