19 package org.sleuthkit.autopsy.corecomponents;
22 import java.awt.Insets;
23 import java.beans.PropertyChangeEvent;
24 import java.beans.PropertyChangeListener;
25 import java.util.Collection;
26 import java.util.Enumeration;
27 import java.util.Iterator;
29 import java.util.TreeMap;
30 import java.util.logging.Level;
31 import java.util.stream.Stream;
32 import javax.swing.BorderFactory;
33 import javax.swing.ImageIcon;
34 import javax.swing.SwingUtilities;
35 import javax.swing.UIManager;
36 import javax.swing.UIManager.LookAndFeelInfo;
37 import javax.swing.UnsupportedLookAndFeelException;
38 import javax.swing.plaf.FontUIResource;
39 import org.netbeans.spi.sendopts.OptionProcessor;
40 import org.netbeans.swing.tabcontrol.plaf.DefaultTabbedContainerUI;
41 import org.openide.modules.ModuleInstall;
42 import org.openide.util.Exceptions;
43 import org.openide.util.Lookup;
44 import org.openide.windows.WindowManager;
60 if (null == instance) {
73 Collection<? extends CommandLineOptionProcessor> optionProcessors = Lookup.getDefault().lookupAll(
CommandLineOptionProcessor.class);
75 if(!optionProcessors.isEmpty()) {
76 Iterator<? extends CommandLineOptionProcessor> iter = optionProcessors.iterator();
77 while (iter.hasNext() || processor == null) {
78 processor = iter.next();
83 SwingUtilities.invokeLater(() -> {
86 UIManager.put(
"ViewTabDisplayerUI",
"org.sleuthkit.autopsy.corecomponents.NoTabsTabDisplayerUI");
87 UIManager.put(DefaultTabbedContainerUI.KEY_VIEW_CONTENT_BORDER, BorderFactory.createEmptyBorder());
88 UIManager.put(
"TabbedPane.contentBorderInsets",
new Insets(0, 0, 0, 0));
103 WindowManager.getDefault().invokeWhenUIReady(() -> {
109 public void propertyChange(PropertyChangeEvent evt) {
126 ImageIcon questionIcon =
new ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/question_32.png"));
127 ImageIcon warningIcon =
new ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/warning_32.png"));
128 ImageIcon informationIcon =
new ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/information_32.png"));
129 ImageIcon errorIcon =
new ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/error_32.png"));
130 UIManager.put(
"OptionPane.errorIcon", errorIcon);
131 UIManager.put(
"OptionPane.warningIcon", warningIcon);
132 UIManager.put(
"OptionPane.questionIcon", questionIcon);
133 UIManager.put(
"OptionPane.informationIcon", informationIcon);
135 if (System.getProperty(
"os.name").toLowerCase().contains(
"mac")) {
138 }
else if (System.getProperty(
"os.name").toLowerCase().contains(
"nux")){
150 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
151 }
catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
152 logger.log(Level.WARNING,
"Error setting OS-X look-and-feel", ex);
157 final String[] UI_MENU_ITEM_KEYS =
new String[]{
"MenuBarUI",};
158 Map<Object, Object> uiEntries =
new TreeMap<>();
159 for (String key : UI_MENU_ITEM_KEYS) {
160 uiEntries.put(key, UIManager.get(key));
164 for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
165 if (
"Nimbus".equals(info.getName())) {
167 UIManager.setLookAndFeel(info.getClassName());
168 }
catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
169 logger.log(Level.WARNING,
"Error setting OS-X look-and-feel", ex);
176 uiEntries.entrySet().stream().forEach((entry) -> {
177 UIManager.put(entry.getKey(), entry.getValue());
181 private static void setUIFont (javax.swing.plaf.FontUIResource f){
182 java.util.Enumeration<Object> keys = UIManager.getDefaults().keys();
183 while (keys.hasMoreElements()) {
184 Object key = keys.nextElement();
185 Object value = UIManager.getDefaults().get(key);
186 if (value instanceof javax.swing.plaf.FontUIResource)
187 UIManager.put(key, f);
202 UIManager.put(
"swing.boldMetal", Boolean.FALSE);
203 UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
204 setUIFont (
new javax.swing.plaf.FontUIResource(
"DejaVu Sans Condensed", Font.PLAIN, 11));
206 }
catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
207 logger.log(Level.WARNING,
"Error setting crossplatform look-and-feel, setting default look-and-feel",ex);
static Installer instance
void setModuleSettings(String value)
static String PROCESSING_COMPLETED
static synchronized boolean makeConfigFile(String moduleName)
static final Logger logger
static synchronized Installer getDefault()
void setUnixLookAndFeel()
static synchronized void setConfigSetting(String moduleName, String settingName, String settingVal)
void addPropertyChangeListener(PropertyChangeListener l)
static final long serialVersionUID
static synchronized boolean configExists(String moduleName)
static void setUIFont(javax.swing.plaf.FontUIResource f)
synchronized static Logger getLogger(String name)
synchronized ProcessState getState()
static StartupWindowProvider getInstance()