5a6ce258ff546c5b9165346bdee2d816ea151814
[debian/jabref.git] / src / java / net / sf / jabref / GUIGlobals.java
1 /*
2   Copyright (C) 2003 Morten O. Alver
3
4   All programs in this directory and
5   subdirectories are published under the GNU General Public License as
6   described below.
7
8   This program is free software; you can redistribute it and/or modify
9   it under the terms of the GNU General Public License as published by
10   the Free Software Foundation; either version 2 of the License, or (at
11   your option) any later version.
12
13   This program is distributed in the hope that it will be useful, but
14   WITHOUT ANY WARRANTY; without even the implied warranty of
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16   General Public License for more details.
17
18   You should have received a copy of the GNU General Public License
19   along with this program; if not, write to the Free Software
20   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
21   USA
22
23   Further information about the GNU GPL is available at:
24   http://www.gnu.org/copyleft/gpl.ja.html
25
26   Note:
27   Modified for use in JabRef.
28
29  */
30
31 package net.sf.jabref;
32
33 import java.awt.*;
34 import java.util.*;
35 //import java.util.List;
36 import java.net.URL;
37 import javax.swing.*;
38 import java.io.FileInputStream;
39 import java.io.InputStream;
40
41 public class GUIGlobals {
42
43   /*
44    * Static variables for graphics files and keyboard shortcuts.
45    */
46
47          // for debugging
48   static int teller = 0;
49
50   // HashMap containing refs to all open BibtexDatabases.
51   //static HashMap frames = new HashMap();
52
53   // Frame titles.
54   public static String
55       frameTitle = "JabRef",
56 //      version = "1.8b",
57       version = Globals.VERSION,
58       stringsTitle = "Strings for database",
59       //untitledStringsTitle = stringsTitle + Globals.lang("untitled"),
60       untitledTitle = "untitled",
61       helpTitle = "JabRef help",
62       TYPE_HEADER = "entrytype",
63       NUMBER_COL = "#",
64       encPrefix = "Encoding: ", // Part of the signature in written bib files.
65       linuxDefaultLookAndFeel = "com.jgoodies.looks.plastic.Plastic3DLookAndFeel",
66       //"com.shfarr.ui.plaf.fh.FhLookAndFeel",
67 //"net.sourceforge.mlf.metouia.MetouiaLookAndFeel",
68 //"org.compiere.plaf.CompiereLookAndFeel",
69       windowsDefaultLookAndFeel = "com.jgoodies.looks.windows.WindowsLookAndFeel";
70
71   public static Font CURRENTFONT,
72       typeNameFont,
73       jabRefFont,
74       fieldNameFont;
75
76   // Signature written at the top of the .bib file.
77   public static final String SIGNATURE =
78       "This file was created with JabRef";
79
80   // Size of help window.
81   static Dimension
82       helpSize = new Dimension(700, 600),
83       aboutSize = new Dimension(600, 265),
84       searchPaneSize = new Dimension(430, 70),
85       searchFieldSize = new Dimension(215, 25);
86
87   // Divider size for BaseFrame split pane. 0 means non-resizable.
88   public static final int
89       SPLIT_PANE_DIVIDER_SIZE = 4,
90       SPLIT_PANE_DIVIDER_LOCATION = 145,
91       TABLE_ROW_PADDING = 4,
92       KEYBIND_COL_0 = 200,
93       KEYBIND_COL_1 = 80, // Added to the font size when determining table
94       PREVIEW_PANEL_PADDING = 15, // Extra room given to the preview editor, in addition to its own
95       PREVIEW_PANEL_HEIGHT = 200,
96       MAX_CONTENT_SELECTOR_WIDTH = 240; // The max width of the combobox for content selectors.
97   // calculated preferred size
98   //public static final int[] PREVIEW_HEIGHT = {115, 300};
99   // row height
100   public static final double
101       VERTICAL_DIVIDER_LOCATION = 0.4;
102
103   // File names.
104   public static String //configFile = "preferences.dat",
105       backupExt = ".bak",
106       tempExt = ".tmp",
107       defaultDir = ".";
108
109   // Image paths.
110   public static String
111       imageSize = "24",
112       extension = ".gif",
113       ex = imageSize + extension,
114       pre = "/images/",
115       helpPre = "/help/",
116       fontPath = "/images/font/";
117
118     static HashMap tableIcons = new HashMap(); // Contains table icon mappings. Set up
119     // further below.
120     public static JLabel incompleteLabel; // JLabel with icon signaling an incomplete entry.
121     public static Color activeEditor = new Color(230, 230, 255);
122
123     public static JLabel getTableIcon(String fieldType) {
124         Object o = tableIcons.get(fieldType);
125         if (o == null) {
126             Globals.logger("Error: no table icon defined for type '"+fieldType+"'.");
127             return null;
128         } else return (JLabel)o;
129     }
130
131
132   public static URL
133
134           openIconFile = GUIGlobals.class.getResource(pre + "fldr_obj.gif"),
135           editIconFile = GUIGlobals.class.getResource(pre + "edittsk_tsk.gif"),
136           saveIconFile = GUIGlobals.class.getResource(pre + "save_edit.gif"),
137           saveAsIconFile = GUIGlobals.class.getResource(pre + "saveas_edit.gif"),
138           prefsIconFile = GUIGlobals.class.getResource(pre + "configure2.png"),
139           newIconFile = GUIGlobals.class.getResource(pre + "new_page.gif"),
140           undoIconFile = GUIGlobals.class.getResource(pre + "undo_edit.gif"),
141           redoIconFile = GUIGlobals.class.getResource(pre + "redo_edit.gif"),
142           preambleIconFile = GUIGlobals.class.getResource(pre + "preamble.png"),
143           addIconFile = GUIGlobals.class.getResource(pre + "plus.gif"),
144           delRowIconFile = GUIGlobals.class.getResource(pre + "minus.gif"),
145           showReqIconFile = GUIGlobals.class.getResource(pre + "reqIcon.png"),
146           showOptIconFile = GUIGlobals.class.getResource(pre + "optIcon.png"),
147           showGenIconFile = GUIGlobals.class.getResource(pre + "absIcon.png"),
148           showAbsIconFile = GUIGlobals.class.getResource(pre + "genIcon.png"),
149           sourceIconFile = GUIGlobals.class.getResource(pre + "viewsource.gif"),
150           copyIconFile = GUIGlobals.class.getResource(pre + "copy_edit.gif"),
151           cutIconFile = GUIGlobals.class.getResource(pre + "cut_edit.gif"),
152           copyKeyIconFile = GUIGlobals.class.getResource(pre + "copy_edit.gif"),
153           genKeyIconFile = GUIGlobals.class.getResource(pre + "wizard.png"),
154           lyxIconFile = GUIGlobals.class.getResource(pre + "lyx2.png"),
155           backIconFile = GUIGlobals.class.getResource(pre + "backward_nav.gif"),
156           forwardIconFile = GUIGlobals.class.getResource(pre + "forward_nav.gif"),
157           contentsIconFile = GUIGlobals.class.getResource(pre + "toc_closed.gif"),
158           removeIconFile = GUIGlobals.class.getResource(pre + "delete_edit.gif"),
159           upIconFile = GUIGlobals.class.getResource(pre + "prev_nav.gif"),
160           downIconFile = GUIGlobals.class.getResource(pre + "next_nav.gif"),
161           stringsIconFile = GUIGlobals.class.getResource(pre + "strings.png"),
162           groupsIconFile = GUIGlobals.class.getResource(pre + "queue.png"),
163           groupsHighlightMatchingAnyFile = GUIGlobals.class.getResource(pre + "groupsHighlightAny.png"),
164           groupsHighlightMatchingAllFile = GUIGlobals.class.getResource(pre + "groupsHighlightAll.png"),
165           closeIconFile = GUIGlobals.class.getResource(pre + "fileclose.png"),
166           close2IconFile = GUIGlobals.class.getResource(pre + "fileclose2.png"),
167           refreshSmallIconFile = GUIGlobals.class.getResource(pre + "refresh_nav.gif"),
168           helpSmallIconFile = GUIGlobals.class.getResource(pre + "view.gif"),
169           helpIconFile = GUIGlobals.class.getResource(pre + "view.gif"),
170           aboutIcon = GUIGlobals.class.getResource(pre + "view.gif"),
171           helpContentsIconFile = GUIGlobals.class.getResource(pre + "contents2.png"),
172           newSmallIconFile = GUIGlobals.class.getResource(pre + "new_page.gif"),
173           pasteIconFile = GUIGlobals.class.getResource(pre + "paste_edit.gif"),
174           editEntryIconFile = GUIGlobals.class.getResource(pre + "DocumentDraw.gif"),
175           searchIconFile = GUIGlobals.class.getResource(pre + "search.gif"),
176           previewIconFile = GUIGlobals.class.getResource(pre + "preview.png"),
177           autoGroupIcon = GUIGlobals.class.getResource(pre + "addtsk_tsk.gif"),
178           wwwIcon = GUIGlobals.class.getResource(pre + "www.png"),
179           wwwCiteSeerIcon = GUIGlobals.class.getResource(pre + "wwwciteseer.png"),
180           fetchMedlineIcon = GUIGlobals.class.getResource(pre + "goto.png"),
181           fetchHourglassIcon = GUIGlobals.class.getResource(pre + "Hourglass.png"),
182           pdfIcon = GUIGlobals.class.getResource(pre + "pdf.png"),
183           pdfSmallIcon = GUIGlobals.class.getResource(pre + "pdf_small.gif"),
184           sheetIcon = GUIGlobals.class.getResource(pre + "defaults_ps.gif"),
185           doiIcon = GUIGlobals.class.getResource(pre + "doi.png"),
186           doiSmallIcon = GUIGlobals.class.getResource(pre + "doismall.png"),
187           psIcon = GUIGlobals.class.getResource(pre + "postscript.png"),
188           incompleteIcon = GUIGlobals.class.getResource(pre + "exclamation.gif"),
189           winEdtIcon = GUIGlobals.class.getResource(pre + "winedt.png"),
190           jabreflogo = GUIGlobals.class.getResource(pre + "JabRef-icon.png"),
191           completeTagIcon = GUIGlobals.class.getResource(pre + "completeItem.png"),
192           wrongTagIcon = GUIGlobals.class.getResource(pre + "wrongItem.png"),
193           clearInputArea = GUIGlobals.class.getResource(pre + "new_page.gif"),
194           markIcon = GUIGlobals.class.getResource(pre + "mark.png"),
195           unmarkIcon = GUIGlobals.class.getResource(pre + "unmark.png"),
196           newBibFile = GUIGlobals.class.getResource(pre + "newBibFile.png"),
197           integrityCheck = GUIGlobals.class.getResource(pre + "integrity.png"),
198           integrityInfo = GUIGlobals.class.getResource(pre + "messageInfo.png"),
199           integrityWarn = GUIGlobals.class.getResource(pre + "messageWarn.png"),
200           integrityFail = GUIGlobals.class.getResource(pre + "messageFail.png"),
201           duplicateIcon = GUIGlobals.class.getResource(pre + "duplicate.png"),
202           emacsIcon = GUIGlobals.class.getResource(pre + "emacs.png");
203
204   public static ImageIcon
205           groupRefiningIcon = new ImageIcon(GUIGlobals.class.getResource(pre +"groupRefining.png")),
206           groupIncludingIcon = new ImageIcon(GUIGlobals.class.getResource(pre +"groupIncluding.png")),
207           groupRegularIcon = null;
208
209     /*public static incompleteEntryIcon = new ImageIcon(incompleteIcon);
210     static {
211       incompleteEntryIcon.setTool
212     }*/
213
214 // Help files (in HTML format):
215   public static String
216       baseFrameHelp = "BaseFrameHelp.html",
217       entryEditorHelp = "EntryEditorHelp.html",
218       stringEditorHelp = "StringEditorHelp.html",
219       helpContents = "Contents.html",
220       searchHelp = "SearchHelp.html",
221       groupsHelp = "GroupsHelp.html",
222       customEntriesHelp = "CustomEntriesHelp.html",
223       contentSelectorHelp = "ContentSelectorHelp.html",
224       labelPatternHelp = "LabelPatterns.html",
225       ownerHelp = "OwnerHelp.html",
226       timeStampHelp = "TimeStampHelp.html",
227         pdfHelp = "ExternalFiles.html",
228       exportCustomizationHelp = "CustomExports.html",
229       importCustomizationHelp = "CustomImports.html",
230       medlineHelp = "MedlineHelp.html",
231         citeSeerHelp = "CiteSeerHelp.html",
232       generalFieldsHelp = "GeneralFields.html",
233 //      searchHelp = "SearchHelp.html",
234       aboutPage = "About.html",
235       shortPlainImport="ShortPlainImport.html",
236       importInspectionHelp = "ImportInspectionDialog.html",
237       shortIntegrityCheck="ShortIntegrityCheck.html",
238       shortAuxImport="ShortAuxImport.html",
239         remoteHelp = "RemoteHelp.html",
240         journalAbbrHelp = "JournalAbbreviations.html";
241
242
243 // Colors.
244   public static Color
245       lightGray = new Color(230, 30, 30), // Light gray background
246       validFieldColor = new Color(100, 100, 150), // Empty field, blue.
247       nullFieldColor = new Color(75, 130, 95), // Valid field, green.
248       invalidFieldColor = new Color(141, 0, 61), // Invalid field, red.
249 //      invalidFieldColor = new Color(210, 70, 70), // Invalid field, red.
250       validFieldBackground = Color.white, // Valid field backgnd.
251 //invalidFieldBackground = new Color(210, 70, 70), // Invalid field backgnd.
252       invalidFieldBackground = new Color(255, 100, 100), // Invalid field backgnd.
253       gradientGray = new Color(112, 121, 165),  // Title bar gradient color, sidepaneheader
254       gradientBlue = new Color(0, 27, 102),  // Title bar gradient color, sidepaneheader
255       //activeTabbed = Color.black,  // active Database (JTabbedPane)
256       //inActiveTabbed = Color.gray.darker(),  // inactive Database
257       activeTabbed = validFieldColor.darker(),  // active Database (JTabbedPane)
258       inActiveTabbed = Color.black,  // inactive Database
259       infoField = new Color(254, 255, 225) // color for an info field
260       ;
261
262
263   public static String META_FLAG = "jabref-meta: ";
264   public static String META_FLAG_OLD = "bibkeeper-meta: ";
265   public static String ENTRYTYPE_FLAG = "jabref-entrytype: ";
266
267   // some fieldname constants
268   public static final double
269         DEFAULT_FIELD_WEIGHT = 1,
270         MAX_FIELD_WEIGHT = 2;
271
272   public static final double
273       SMALL_W = 0.30,
274       MEDIUM_W = 0.5,
275       LARGE_W = 1.5 ;
276
277   public static final double PE_HEIGHT = 2;
278
279 // Size constants for EntryTypeForm; small, medium and large.
280   public static int[] FORM_WIDTH = new int[] { 500, 650, 820};
281   public static int[] FORM_HEIGHT = new int[] { 90, 110, 130};
282
283 // Constants controlling formatted bibtex output.
284   public static final int
285       INDENT = 4,
286       LINE_LENGTH = 65; // Maximum
287
288   public static int DEFAULT_FIELD_LENGTH = 100,
289       NUMBER_COL_LENGTH = 32,
290       WIDTH_ICON_COL = 19;
291
292   // Column widths for export customization dialog table:
293   public static final int
294       EXPORT_DIALOG_COL_0_WIDTH = 50,
295       EXPORT_DIALOG_COL_1_WIDTH = 200,
296       EXPORT_DIALOG_COL_2_WIDTH = 30;
297
298   // Column widths for import customization dialog table:
299   public static final int
300       IMPORT_DIALOG_COL_0_WIDTH = 200,
301       IMPORT_DIALOG_COL_1_WIDTH = 80,
302       IMPORT_DIALOG_COL_2_WIDTH = 200,
303       IMPORT_DIALOG_COL_3_WIDTH = 200;
304
305   public static final Map LANGUAGES;
306
307   static {
308     LANGUAGES = new HashMap();
309     // LANGUAGES contains mappings for supported languages.
310     LANGUAGES.put("English", "en");
311     LANGUAGES.put("Deutsch", "de");
312     LANGUAGES.put("Fran\u00E7ais", "fr");
313       LANGUAGES.put("Italiano", "it");
314       LANGUAGES.put("Norsk", "no");
315
316   }
317
318   /** returns the path to language independent help files */
319   public static String getLocaleHelpPath()
320   {
321     JabRefPreferences prefs = JabRefPreferences.getInstance() ;
322     String middle = prefs.get("language")+"/";
323     if (middle.equals("en/")) middle = ""; // english in base help dir.
324
325     return (helpPre + middle );
326   }
327
328
329   /**
330    * Perform initializations that are only used in graphical mode. This is to prevent
331    * the "Xlib: connection to ":0.0" refused by server" error when access to the X server
332    * on Un*x is unavailable.
333    */
334   public static void init() {
335     typeNameFont = new Font("arial", Font.ITALIC+Font.BOLD, 24);
336     fieldNameFont = new Font("arial", Font.ITALIC+Font.BOLD, 14);
337     incompleteLabel = new JLabel(new ImageIcon(GUIGlobals.incompleteIcon));
338     incompleteLabel.setToolTipText(Globals.lang("Entry is incomplete"));
339     JLabel lab;
340     lab = new JLabel(new ImageIcon(pdfIcon));
341     lab.setToolTipText(Globals.lang("Open")+" PDF");
342     tableIcons.put("pdf", lab);
343     lab = new JLabel(new ImageIcon(wwwIcon));
344     lab.setToolTipText(Globals.lang("Open")+" URL");
345     tableIcons.put("url", lab);
346     lab = new JLabel(new ImageIcon(wwwCiteSeerIcon));
347     lab.setToolTipText(Globals.lang("Open")+" CiteSeer URL");
348     tableIcons.put("citeseerurl", lab);
349     lab = new JLabel(new ImageIcon(doiSmallIcon));
350     lab.setToolTipText(Globals.lang("Open")+" DOI "+Globals.lang("web link"));
351     tableIcons.put("doi", lab);
352     lab = new JLabel(new ImageIcon(psIcon));
353     lab.setToolTipText(Globals.lang("Open")+" PS");
354     tableIcons.put("ps", lab);
355
356     //jabRefFont = new Font("arial", Font.ITALIC/*+Font.BOLD*/, 20);
357   }
358
359 }