mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-12 16:06:15 +00:00
HdXViewer capability has been added to the Hex Viewer
This commit is contained in:
parent
5cc79ecce9
commit
490ea446cd
@ -18,6 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.sleuthkit.autopsy.core;
|
package org.sleuthkit.autopsy.core;
|
||||||
|
|
||||||
|
import java.nio.file.Paths;
|
||||||
import org.sleuthkit.autopsy.coreutils.TextConverter;
|
import org.sleuthkit.autopsy.coreutils.TextConverter;
|
||||||
import java.util.prefs.BackingStoreException;
|
import java.util.prefs.BackingStoreException;
|
||||||
import org.sleuthkit.autopsy.events.MessageServiceConnectionInfo;
|
import org.sleuthkit.autopsy.events.MessageServiceConnectionInfo;
|
||||||
@ -75,6 +76,7 @@ public final class UserPreferences {
|
|||||||
public static final String SHOW_ONLY_CURRENT_USER_TAGS = "ShowOnlyCurrentUserTags";
|
public static final String SHOW_ONLY_CURRENT_USER_TAGS = "ShowOnlyCurrentUserTags";
|
||||||
public static final String HIDE_CENTRAL_REPO_COMMENTS_AND_OCCURRENCES = "HideCentralRepoCommentsAndOccurrences";
|
public static final String HIDE_CENTRAL_REPO_COMMENTS_AND_OCCURRENCES = "HideCentralRepoCommentsAndOccurrences";
|
||||||
public static final String DISPLAY_TRANSLATED_NAMES = "DisplayTranslatedNames";
|
public static final String DISPLAY_TRANSLATED_NAMES = "DisplayTranslatedNames";
|
||||||
|
public static final String HDX_EDITOR_PATH = "HdXEditorPath";
|
||||||
|
|
||||||
// Prevent instantiation.
|
// Prevent instantiation.
|
||||||
private UserPreferences() {
|
private UserPreferences() {
|
||||||
@ -471,4 +473,20 @@ public final class UserPreferences {
|
|||||||
public static void setLogFileCount(int count) {
|
public static void setLogFileCount(int count) {
|
||||||
preferences.putInt(MAX_NUM_OF_LOG_FILE, count);
|
preferences.putInt(MAX_NUM_OF_LOG_FILE, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param executablePath
|
||||||
|
*/
|
||||||
|
public static void setHdXEditorPath(String executablePath) {
|
||||||
|
preferences.put(HDX_EDITOR_PATH, executablePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String getHdXEditorPath() {
|
||||||
|
return preferences.get(HDX_EDITOR_PATH, Paths.get("C:", "Program Files", "HxD", "HxD.exe").toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -194,3 +194,33 @@ ViewPreferencesPanel.useBestViewerRadioButton.toolTipText=For example, change fr
|
|||||||
ViewPreferencesPanel.useBestViewerRadioButton.text=Change to the most specific file viewer
|
ViewPreferencesPanel.useBestViewerRadioButton.text=Change to the most specific file viewer
|
||||||
ViewPreferencesPanel.fileNameTranslationColumnCheckbox.text=Add column in result viewer for file name translation
|
ViewPreferencesPanel.fileNameTranslationColumnCheckbox.text=Add column in result viewer for file name translation
|
||||||
DataContentViewerHex.launchHxDButton.text=Launch in HxD
|
DataContentViewerHex.launchHxDButton.text=Launch in HxD
|
||||||
|
ExternalViewerGlobalSettingsPanel.jButton2.text=jButton2
|
||||||
|
ExternalViewerGlobalSettingsPanel.newRuleButton1.text=New Rule
|
||||||
|
ExternalViewerGlobalSettingsPanel.newRuleButton.text=New Rule
|
||||||
|
ExternalViewerGlobalSettingsPanel.browseHxDDirectory.text=Browse
|
||||||
|
ExternalViewerGlobalSettingsPanel.jLabel2.text=Set launchable content viewer extensions
|
||||||
|
ExternalViewerGlobalSettingsPanel.jLabel1.text=HxD Editor Path:
|
||||||
|
ExternalViewerGlobalSettingsPanel.editRuleButton.text=Edit Rule
|
||||||
|
ExternalViewerGlobalSettingsPanel.deleteRuleButton.text=Delete Rule
|
||||||
|
ExternalViewerGlobalSettingsPanel.externalViewerTitleLabel.text=Set aplication viewer to use for files with specific mime types/extensions:
|
||||||
|
ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title1=Application
|
||||||
|
ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title0=Mime type/Extension
|
||||||
|
AddExternalViewerRulePanel.nameLabel.text=MIME type or extension
|
||||||
|
AddExternalViewerRulePanel.browseButton.text=Browse
|
||||||
|
AddExternalViewerRulePanel.exePathTextField.text=
|
||||||
|
AddExternalViewerRulePanel.exePathLabel.text=Path of the program to use for files with this type or extension
|
||||||
|
AddExternalViewerRulePanel.extRadioButton.text=Extension
|
||||||
|
AddExternalViewerRulePanel.mimeRadioButton.text=MIME type
|
||||||
|
AddExternalViewerRulePanel.nameTextField.text=
|
||||||
|
ExternalViewerGlobalSettingsPanel.jButton2.text_1=jButton2
|
||||||
|
ExternalViewerGlobalSettingsPanel.newRuleButton1.text_1=New Rule
|
||||||
|
ExternalViewerGlobalSettingsPanel.newRuleButton.text_1=New Rule
|
||||||
|
ExternalViewerGlobalSettingsPanel.browseHxDDirectory.text_1=Browse
|
||||||
|
ExternalViewerGlobalSettingsPanel.jLabel2.text_1=Set launchable content viewer extensions
|
||||||
|
ExternalViewerGlobalSettingsPanel.jLabel1.text_1=HxD Editor Path:
|
||||||
|
ExternalViewerGlobalSettingsPanel.HxDPath.text=C:/Program Files/HxD/HxD.exe
|
||||||
|
ExternalViewerGlobalSettingsPanel.editRuleButton.text_1=Edit Rule
|
||||||
|
ExternalViewerGlobalSettingsPanel.deleteRuleButton.text_1=Delete Rule
|
||||||
|
ExternalViewerGlobalSettingsPanel.externalViewerTitleLabel.text_1=Set aplication viewer to use for files with specific mime types/extensions:
|
||||||
|
ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title1_1=Application
|
||||||
|
ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title0_1=Mime type/Extension
|
||||||
|
@ -32,13 +32,12 @@ import javax.swing.JMenuItem;
|
|||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
import javax.swing.text.BadLocationException;
|
import javax.swing.text.BadLocationException;
|
||||||
import javax.swing.text.Utilities;
|
import javax.swing.text.Utilities;
|
||||||
import org.openide.modules.InstalledFileLocator;
|
|
||||||
import org.openide.nodes.Node;
|
import org.openide.nodes.Node;
|
||||||
import org.openide.util.lookup.ServiceProvider;
|
import org.openide.util.lookup.ServiceProvider;
|
||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
|
import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
|
||||||
|
import org.sleuthkit.autopsy.core.UserPreferences;
|
||||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataContentViewer;
|
import org.sleuthkit.autopsy.corecomponentinterfaces.DataContentViewer;
|
||||||
import org.sleuthkit.autopsy.coreutils.ExecUtil;
|
|
||||||
import org.sleuthkit.autopsy.datamodel.ContentUtils;
|
import org.sleuthkit.autopsy.datamodel.ContentUtils;
|
||||||
import org.sleuthkit.autopsy.datamodel.DataConversion;
|
import org.sleuthkit.autopsy.datamodel.DataConversion;
|
||||||
import org.sleuthkit.datamodel.Content;
|
import org.sleuthkit.datamodel.Content;
|
||||||
@ -356,22 +355,33 @@ public class DataContentViewerHex extends javax.swing.JPanel implements DataCont
|
|||||||
|
|
||||||
private void launchHxDButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_launchHxDButtonActionPerformed
|
private void launchHxDButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_launchHxDButtonActionPerformed
|
||||||
try {
|
try {
|
||||||
|
File HdXExecutable = new File(UserPreferences.getHdXEditorPath());
|
||||||
|
if(!HdXExecutable.exists() || !HdXExecutable.canExecute()) {
|
||||||
|
JOptionPane.showMessageDialog(null, "Unable to launch HxD Editor. "
|
||||||
|
+ "Please set-up the HdX install location in Tools -> "
|
||||||
|
+ "Options -> External Viewer");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
String tempDirectory = Case.getCurrentCaseThrows().getTempDirectory();
|
String tempDirectory = Case.getCurrentCaseThrows().getTempDirectory();
|
||||||
File dataSourceInTempDirectory = Paths.get(tempDirectory, dataSource.getId() + dataSource.getName()).toFile();
|
File dataSourceInTempDirectory = Paths.get(tempDirectory, dataSource.getId() + dataSource.getName()).toFile();
|
||||||
ContentUtils.writeToFile(dataSource, dataSourceInTempDirectory);
|
ContentUtils.writeToFile(dataSource, dataSourceInTempDirectory);
|
||||||
|
|
||||||
String HdXExecutableToFind = Paths.get("HxD", "HxD64.exe").toString();
|
try {
|
||||||
File HdXExecutable = InstalledFileLocator.getDefault().locate(HdXExecutableToFind, DataContentViewerHex.class.getPackage().getName(), false);
|
|
||||||
if (null == HdXExecutable) {
|
|
||||||
throw new IOException(String.format("Could not find HdXExecutable at %s", HdXExecutableToFind));
|
|
||||||
}
|
|
||||||
|
|
||||||
ProcessBuilder launchHdXExecutable = new ProcessBuilder();
|
ProcessBuilder launchHdXExecutable = new ProcessBuilder();
|
||||||
launchHdXExecutable.command(String.format("%s \"%s\"", HdXExecutable.getAbsolutePath(), dataSourceInTempDirectory.getAbsolutePath()));
|
launchHdXExecutable.command(String.format("\"%s\" \"%s\"",
|
||||||
ExecUtil.execute(launchHdXExecutable);
|
HdXExecutable.getAbsolutePath(),
|
||||||
|
dataSourceInTempDirectory.getAbsolutePath()));
|
||||||
|
launchHdXExecutable.start();
|
||||||
|
} catch (IOException ex) {
|
||||||
|
JOptionPane.showMessageDialog(null, "Unable to launch HxD Editor. "
|
||||||
|
+ "Please set-up the HdX install location in Tools -> "
|
||||||
|
+ "Options -> External Viewer");
|
||||||
|
dataSourceInTempDirectory.delete();
|
||||||
|
}
|
||||||
} catch (NoCurrentCaseException | IOException ex) {
|
} catch (NoCurrentCaseException | IOException ex) {
|
||||||
logger.log(Level.SEVERE, "Unable to launch HxD Editor", ex);
|
logger.log(Level.SEVERE, "Unable to copy file into temp directory", ex);
|
||||||
//TODO - Make pop-up appear saying there were problems attempting to launch editor
|
//Should we add a pop-up for this?
|
||||||
}
|
}
|
||||||
}//GEN-LAST:event_launchHxDButtonActionPerformed
|
}//GEN-LAST:event_launchHxDButtonActionPerformed
|
||||||
|
|
||||||
@ -546,6 +556,7 @@ public class DataContentViewerHex extends javax.swing.JPanel implements DataCont
|
|||||||
goToPageLabel.setVisible(isVisible);
|
goToPageLabel.setVisible(isVisible);
|
||||||
goToOffsetTextField.setVisible(isVisible);
|
goToOffsetTextField.setVisible(isVisible);
|
||||||
goToOffsetLabel.setVisible(isVisible);
|
goToOffsetLabel.setVisible(isVisible);
|
||||||
|
launchHxDButton.setVisible(isVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -124,12 +124,9 @@ ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title2_1=Title 3
|
|||||||
ExternalViewerGlobalSettingsPanel.newRuleButton1.text=New Rule
|
ExternalViewerGlobalSettingsPanel.newRuleButton1.text=New Rule
|
||||||
ExternalViewerGlobalSettingsPanel.editRuleButton.text=Edit Rule
|
ExternalViewerGlobalSettingsPanel.editRuleButton.text=Edit Rule
|
||||||
ExternalViewerGlobalSettingsPanel.deleteRuleButton.text=Delete Rule
|
ExternalViewerGlobalSettingsPanel.deleteRuleButton.text=Delete Rule
|
||||||
ExternalViewerGlobalSettingsPanel.externalViewerTitleLabel.text=Set aplication viewer to use for files with specific mime types/extensions:
|
ExternalViewerGlobalSettingsPanel.externalViewerTitleLabel.text=Add your custom rules for external viewers:
|
||||||
ExternalViewerGlobalSettingsPanel.newRuleButton.text=New Rule
|
ExternalViewerGlobalSettingsPanel.newRuleButton.text=New Rule
|
||||||
ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title1=Application
|
|
||||||
ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title0=Mime type/Extension
|
|
||||||
ExternalViewerGlobalSettingsPanel.jLabel1.text=HxD Editor Path:
|
|
||||||
ExternalViewerGlobalSettingsPanel.jButton2.text=jButton2
|
ExternalViewerGlobalSettingsPanel.jButton2.text=jButton2
|
||||||
ExternalViewerGlobalSettingsPanel.jLabel2.text=Set launchable content viewer extensions
|
ExternalViewerGlobalSettingsPanel.jLabel1.text=HxD Editor Path:
|
||||||
ExternalViewerGlobalSettingsPanel.browseHxDDirectory.text=Browse
|
ExternalViewerGlobalSettingsPanel.browseHxDDirectory.text=Browse
|
||||||
ExternalViewerGlobalSettingsPanel.HxDPath.text=C:/Program Files/HxD/HxD.exe
|
ExternalViewerGlobalSettingsPanel.jLabel2.text=Add content viewer extensions:
|
||||||
|
@ -282,9 +282,6 @@
|
|||||||
<Component class="javax.swing.JTextField" name="HxDPath">
|
<Component class="javax.swing.JTextField" name="HxDPath">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="editable" type="boolean" value="false"/>
|
<Property name="editable" type="boolean" value="false"/>
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/directorytree/Bundle.properties" key="ExternalViewerGlobalSettingsPanel.HxDPath.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
</Properties>
|
||||||
</Component>
|
</Component>
|
||||||
<Component class="javax.swing.JLabel" name="jLabel1">
|
<Component class="javax.swing.JLabel" name="jLabel1">
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.sleuthkit.autopsy.directorytree;
|
package org.sleuthkit.autopsy.directorytree;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import javax.swing.JFileChooser;
|
import javax.swing.JFileChooser;
|
||||||
@ -27,7 +28,7 @@ import javax.swing.table.AbstractTableModel;
|
|||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
import org.netbeans.spi.options.OptionsPanelController;
|
import org.netbeans.spi.options.OptionsPanelController;
|
||||||
import org.sleuthkit.autopsy.casemodule.GeneralFilter;
|
import org.sleuthkit.autopsy.casemodule.GeneralFilter;
|
||||||
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
import org.sleuthkit.autopsy.core.UserPreferences;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An options panel for the user to create, edit, and delete associations for
|
* An options panel for the user to create, edit, and delete associations for
|
||||||
@ -39,8 +40,6 @@ final class ExternalViewerGlobalSettingsPanel extends javax.swing.JPanel impleme
|
|||||||
|
|
||||||
private RulesTableModel rulesTableModel;
|
private RulesTableModel rulesTableModel;
|
||||||
private java.util.List<ExternalViewerRule> rules;
|
private java.util.List<ExternalViewerRule> rules;
|
||||||
private static final String MODULE_NAME = ExternalViewerGlobalSettingsPanel.class.getName();
|
|
||||||
private static final String HXD_PATH_NAME = "HxDExecutablePath";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates new form ExternalViewerGlobalSettingsPanel
|
* Creates new form ExternalViewerGlobalSettingsPanel
|
||||||
@ -171,7 +170,6 @@ final class ExternalViewerGlobalSettingsPanel extends javax.swing.JPanel impleme
|
|||||||
);
|
);
|
||||||
|
|
||||||
HxDPath.setEditable(false);
|
HxDPath.setEditable(false);
|
||||||
HxDPath.setText(org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.HxDPath.text")); // NOI18N
|
|
||||||
|
|
||||||
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.jLabel1.text")); // NOI18N
|
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.jLabel1.text")); // NOI18N
|
||||||
|
|
||||||
@ -245,25 +243,6 @@ final class ExternalViewerGlobalSettingsPanel extends javax.swing.JPanel impleme
|
|||||||
);
|
);
|
||||||
}// </editor-fold>//GEN-END:initComponents
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
private void browseHxDDirectoryActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_browseHxDDirectoryActionPerformed
|
|
||||||
JFileChooser fileWindow = new JFileChooser();
|
|
||||||
fileWindow.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
|
||||||
GeneralFilter exeFilter = new GeneralFilter(GeneralFilter.EXECUTABLE_EXTS, GeneralFilter.EXECUTABLE_DESC);
|
|
||||||
File HxDPathFile = new File(HxDPath.getText());
|
|
||||||
if(HxDPathFile.exists() && HxDPathFile.canExecute()) {
|
|
||||||
fileWindow.setCurrentDirectory(new File(HxDPath.getText()));
|
|
||||||
}
|
|
||||||
fileWindow.setDragEnabled(false);
|
|
||||||
fileWindow.setFileFilter(exeFilter);
|
|
||||||
fileWindow.setMultiSelectionEnabled(false);
|
|
||||||
int returnVal = fileWindow.showSaveDialog(this);
|
|
||||||
if(returnVal == JFileChooser.APPROVE_OPTION) {
|
|
||||||
File HxDExecutable = fileWindow.getSelectedFile();
|
|
||||||
HxDPath.setText(HxDExecutable.getAbsolutePath());
|
|
||||||
firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
|
|
||||||
}
|
|
||||||
}//GEN-LAST:event_browseHxDDirectoryActionPerformed
|
|
||||||
|
|
||||||
private void newRuleButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newRuleButtonActionPerformed
|
private void newRuleButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newRuleButtonActionPerformed
|
||||||
AddExternalViewerRuleDialog dialog = new AddExternalViewerRuleDialog();
|
AddExternalViewerRuleDialog dialog = new AddExternalViewerRuleDialog();
|
||||||
AddExternalViewerRuleDialog.BUTTON_PRESSED result = dialog.getResult();
|
AddExternalViewerRuleDialog.BUTTON_PRESSED result = dialog.getResult();
|
||||||
@ -321,17 +300,42 @@ final class ExternalViewerGlobalSettingsPanel extends javax.swing.JPanel impleme
|
|||||||
firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
|
firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
|
||||||
}//GEN-LAST:event_deleteRuleButtonActionPerformed
|
}//GEN-LAST:event_deleteRuleButtonActionPerformed
|
||||||
|
|
||||||
|
private void browseHxDDirectoryActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_browseHxDDirectoryActionPerformed
|
||||||
|
JFileChooser fileWindow = new JFileChooser();
|
||||||
|
fileWindow.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
||||||
|
GeneralFilter exeFilter = new GeneralFilter(GeneralFilter.EXECUTABLE_EXTS, GeneralFilter.EXECUTABLE_DESC);
|
||||||
|
File HxDPathFile = new File(HxDPath.getText());
|
||||||
|
if(HxDPathFile.exists() && HxDPathFile.canExecute()) {
|
||||||
|
fileWindow.setCurrentDirectory(new File(HxDPath.getText()));
|
||||||
|
}
|
||||||
|
fileWindow.setDragEnabled(false);
|
||||||
|
fileWindow.setFileFilter(exeFilter);
|
||||||
|
fileWindow.setMultiSelectionEnabled(false);
|
||||||
|
int returnVal = fileWindow.showSaveDialog(this);
|
||||||
|
if(returnVal == JFileChooser.APPROVE_OPTION) {
|
||||||
|
File HxDExecutable = fileWindow.getSelectedFile();
|
||||||
|
HxDPath.setForeground(Color.BLACK);
|
||||||
|
HxDPath.setText(HxDExecutable.getAbsolutePath());
|
||||||
|
firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
|
||||||
|
}
|
||||||
|
}//GEN-LAST:event_browseHxDDirectoryActionPerformed
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void store() {
|
public void store() {
|
||||||
ExternalViewerRulesManager.getInstance().setUserRules(rules);
|
ExternalViewerRulesManager.getInstance().setUserRules(rules);
|
||||||
ModuleSettings.setConfigSetting(MODULE_NAME, HXD_PATH_NAME, HxDPath.getText());
|
UserPreferences.setHdXEditorPath(HxDPath.getText());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load() {
|
public void load() {
|
||||||
rules = ExternalViewerRulesManager.getInstance().getUserRules();
|
rules = ExternalViewerRulesManager.getInstance().getUserRules();
|
||||||
if(ModuleSettings.settingExists(MODULE_NAME, HXD_PATH_NAME)) {
|
String editorPath = UserPreferences.getHdXEditorPath();
|
||||||
HxDPath.setText(ModuleSettings.getConfigSetting(MODULE_NAME, HXD_PATH_NAME));
|
File HdXExecutable = new File(editorPath);
|
||||||
|
if(HdXExecutable.exists() || HdXExecutable.canExecute()) {
|
||||||
|
HxDPath.setText(editorPath);
|
||||||
|
} else {
|
||||||
|
HxDPath.setForeground(Color.RED);
|
||||||
|
HxDPath.setText(editorPath);
|
||||||
}
|
}
|
||||||
rulesTableModel.fireTableDataChanged();
|
rulesTableModel.fireTableDataChanged();
|
||||||
checkButtons();
|
checkButtons();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user