19 package org.sleuthkit.autopsy.corecomponents;
22 import java.awt.GraphicsEnvironment;
23 import java.awt.Insets;
24 import java.beans.PropertyChangeEvent;
25 import java.beans.PropertyChangeListener;
26 import java.util.Collection;
27 import java.util.Enumeration;
28 import java.util.Iterator;
30 import java.util.TreeMap;
31 import java.util.logging.Level;
32 import java.util.stream.Stream;
33 import javax.swing.BorderFactory;
34 import javax.swing.ImageIcon;
35 import javax.swing.SwingUtilities;
36 import javax.swing.UIManager;
37 import javax.swing.UIManager.LookAndFeelInfo;
38 import javax.swing.UnsupportedLookAndFeelException;
39 import javax.swing.plaf.FontUIResource;
40 import org.netbeans.spi.sendopts.OptionProcessor;
41 import org.netbeans.swing.tabcontrol.plaf.DefaultTabbedContainerUI;
42 import org.openide.modules.ModuleInstall;
43 import org.openide.util.Lookup;
44 import org.openide.windows.WindowManager;
63 if (null == instance) {
76 Collection<? extends CommandLineOptionProcessor> optionProcessors = Lookup.getDefault().lookupAll(
CommandLineOptionProcessor.class);
78 if(!optionProcessors.isEmpty()) {
79 Iterator<? extends CommandLineOptionProcessor> iter = optionProcessors.iterator();
80 while (iter.hasNext() || processor == null) {
81 processor = iter.next();
86 if (!GraphicsEnvironment.isHeadless()) {
87 SwingUtilities.invokeLater(() -> {
91 UIManager.put(
"ViewTabDisplayerUI",
"org.sleuthkit.autopsy.corecomponents.NoTabsTabDisplayerUI");
92 UIManager.put(DefaultTabbedContainerUI.KEY_VIEW_CONTENT_BORDER, BorderFactory.createEmptyBorder());
93 UIManager.put(
"TabbedPane.contentBorderInsets",
new Insets(0, 0, 0, 0));
115 if (GraphicsEnvironment.isHeadless()) {
121 public void propertyChange(PropertyChangeEvent evt) {
129 WindowManager.getDefault().invokeWhenUIReady(() -> {
135 public void propertyChange(PropertyChangeEvent evt) {
165 ImageIcon questionIcon =
new ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/question_32.png"));
166 ImageIcon warningIcon =
new ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/warning_32.png"));
167 ImageIcon informationIcon =
new ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/information_32.png"));
168 ImageIcon errorIcon =
new ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/error_32.png"));
169 UIManager.put(
"OptionPane.errorIcon", errorIcon);
170 UIManager.put(
"OptionPane.warningIcon", warningIcon);
171 UIManager.put(
"OptionPane.questionIcon", questionIcon);
172 UIManager.put(
"OptionPane.informationIcon", informationIcon);
174 if (System.getProperty(
"os.name").toLowerCase().contains(
"mac")) {
177 }
else if (System.getProperty(
"os.name").toLowerCase().contains(
"nux")){
189 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
190 }
catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
191 logger.log(Level.WARNING,
"Error setting OS-X look-and-feel", ex);
196 final String[] UI_MENU_ITEM_KEYS =
new String[]{
"MenuBarUI",};
197 Map<Object, Object> uiEntries =
new TreeMap<>();
198 for (String key : UI_MENU_ITEM_KEYS) {
199 uiEntries.put(key, UIManager.get(key));
203 for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
204 if (
"Nimbus".equals(info.getName())) {
206 UIManager.setLookAndFeel(info.getClassName());
207 }
catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
208 logger.log(Level.WARNING,
"Error setting OS-X look-and-feel", ex);
215 uiEntries.entrySet().stream().forEach((entry) -> {
216 UIManager.put(entry.getKey(), entry.getValue());
220 private static void setUIFont (javax.swing.plaf.FontUIResource f){
221 java.util.Enumeration<Object> keys = UIManager.getDefaults().keys();
222 while (keys.hasMoreElements()) {
223 Object key = keys.nextElement();
224 Object value = UIManager.getDefaults().get(key);
225 if (value instanceof javax.swing.plaf.FontUIResource)
226 UIManager.put(key, f);
241 UIManager.put(
"swing.boldMetal", Boolean.FALSE);
242 UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
243 setUIFont (
new javax.swing.plaf.FontUIResource(
"DejaVu Sans Condensed", Font.PLAIN, 11));
245 }
catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
246 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
void showStartupWindows(boolean crFirstTimeSetup)
static synchronized Installer getDefault()
void setUnixLookAndFeel()
static synchronized void setConfigSetting(String moduleName, String settingName, String settingVal)
void addPropertyChangeListener(PropertyChangeListener l)
static final long serialVersionUID
boolean setupDefaultCentralRepository()
static CRDefaultSetupAction getInstance()
static boolean shouldDisplay()
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()