Autopsy  4.11.0
Graphical digital forensics platform for The Sleuth Kit and other tools.
TranslationOptionsPanel.java
Go to the documentation of this file.
1 /*
2  * Autopsy Forensic Browser
3  *
4  * Copyright 2019 Basis Technology Corp.
5  * Contact: carrier <at> sleuthkit <dot> org
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 package org.sleuthkit.autopsy.texttranslation.ui;
20 
21 import java.awt.BorderLayout;
22 import java.awt.Color;
23 import java.awt.Component;
24 import java.beans.PropertyChangeEvent;
25 import java.beans.PropertyChangeListener;
26 import java.util.logging.Level;
27 import javax.swing.JLabel;
28 import org.openide.util.NbBundle.Messages;
33 
37 public class TranslationOptionsPanel extends javax.swing.JPanel {
38 
39  private final static Logger logger = Logger.getLogger(TranslationOptionsPanel.class.getName());
40  private static final long serialVersionUID = 1L;
42  private String currentSelection = "";
43 
47  @Messages({"TranslationOptionsPanel.translationDisabled.text=Translation disabled"})
50  controller = theController;
51  translatorComboBox.addItem(Bundle.TranslationOptionsPanel_translationDisabled_text());
52  TextTranslationService.getInstance().getTranslators().forEach((translator) -> {
53  translatorComboBox.addItem(translator.getName());
54  });
55  translatorComboBox.setEnabled(translatorComboBox.getItemCount() > 1);
56  load();
57  }
58 
63  private void updatePanel() {
64  if (!currentSelection.equals(translatorComboBox.getSelectedItem().toString())) {
65  currentSelection = translatorComboBox.getSelectedItem().toString();
67  controller.changed();
68  }
69  }
70 
74  @Messages({"TranslationOptionsPanel.textTranslatorsUnavailable.text=Unable to get selected text translator, translation is disabled.",
75  "TranslationOptionsPanel.noTextTranslatorSelected.text=No text translator selected, translation is disabled.",
76  "TranslationOptionsPanel.noTextTranslators.text=No text translators exist, translation is disabled."})
77  private void loadSelectedPanelSettings() {
78  translationServicePanel.removeAll();
79  if (translatorComboBox.getSelectedItem() != null && !translatorComboBox.getSelectedItem().toString().equals(Bundle.TranslationOptionsPanel_translationDisabled_text())) {
80  try {
81  Component panel = TextTranslationService.getInstance().getTranslatorByName(translatorComboBox.getSelectedItem().toString()).getComponent();
82  panel.addPropertyChangeListener(new PropertyChangeListener() {
83  @Override
84  public void propertyChange(PropertyChangeEvent evt) {
85  controller.changed();
86  }
87  });
88  translationServicePanel.add(panel, BorderLayout.PAGE_START);
89  } catch (NoServiceProviderException ex) {
90  logger.log(Level.WARNING, "Unable to get TextExtractor named: " + translatorComboBox.getSelectedItem().toString(), ex);
91  JLabel label = new JLabel(Bundle.TranslationOptionsPanel_textTranslatorsUnavailable_text());
92  label.setForeground(Color.RED);
93  translationServicePanel.add(label, BorderLayout.PAGE_START);
94  }
95  } else {
96  if (translatorComboBox.getItemCount() < 2) {
97  translationServicePanel.add(new JLabel(Bundle.TranslationOptionsPanel_noTextTranslators_text()), BorderLayout.PAGE_START);
98  } else {
99  translationServicePanel.add(new JLabel(Bundle.TranslationOptionsPanel_noTextTranslatorSelected_text()), BorderLayout.PAGE_START);
100  }
101  }
102  revalidate();
103  repaint();
104  }
105 
109  final void load() {
110  currentSelection = UserPreferences.getTextTranslatorName();
111  if (currentSelection == null) {
112  currentSelection = Bundle.TranslationOptionsPanel_translationDisabled_text();
113  }
114  translatorComboBox.setSelectedItem(currentSelection);
116  }
117 
121  void store() {
122  //The current text translator name is saved to user preferences
123  UserPreferences.setTextTranslatorName(currentSelection);
124  //The TextTranslationService updates the TextTranslator in use from user preferences
125  TextTranslationService.getInstance().updateSelectedTranslator();
126  if (currentSelection != null && !currentSelection.equals(Bundle.TranslationOptionsPanel_translationDisabled_text())) {
127  try {
128  TextTranslationService.getInstance().getTranslatorByName(currentSelection).saveSettings();
129  } catch (NoServiceProviderException ex) {
130  logger.log(Level.WARNING, "Unable to save settings for TextTranslator named: " + currentSelection, ex);
131  }
132  }
133 
134  }
135 
141  @SuppressWarnings("unchecked")
142  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
143  private void initComponents() {
144 
145  translatorComboBox = new javax.swing.JComboBox<>();
146  translationServiceLabel = new javax.swing.JLabel();
147  translationServicePanel = new javax.swing.JPanel();
148  translationOptionsDescription = new javax.swing.JLabel();
149 
150  translatorComboBox.addActionListener(new java.awt.event.ActionListener() {
151  public void actionPerformed(java.awt.event.ActionEvent evt) {
153  }
154  });
155 
156  org.openide.awt.Mnemonics.setLocalizedText(translationServiceLabel, org.openide.util.NbBundle.getMessage(TranslationOptionsPanel.class, "TranslationOptionsPanel.translationServiceLabel.text")); // NOI18N
157 
158  translationServicePanel.setLayout(new java.awt.BorderLayout());
159 
160  org.openide.awt.Mnemonics.setLocalizedText(translationOptionsDescription, org.openide.util.NbBundle.getMessage(TranslationOptionsPanel.class, "TranslationOptionsPanel.translationOptionsDescription.text")); // NOI18N
161 
162  javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
163  this.setLayout(layout);
164  layout.setHorizontalGroup(
165  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
166  .addGroup(layout.createSequentialGroup()
167  .addContainerGap()
168  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
169  .addComponent(translationServicePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
170  .addGroup(layout.createSequentialGroup()
171  .addComponent(translationServiceLabel)
172  .addGap(10, 10, 10)
173  .addComponent(translatorComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 214, javax.swing.GroupLayout.PREFERRED_SIZE)
174  .addGap(0, 0, Short.MAX_VALUE))
175  .addComponent(translationOptionsDescription, javax.swing.GroupLayout.DEFAULT_SIZE, 462, Short.MAX_VALUE))
176  .addContainerGap())
177  );
178  layout.setVerticalGroup(
179  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
180  .addGroup(layout.createSequentialGroup()
181  .addContainerGap()
182  .addComponent(translationOptionsDescription, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE)
183  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
184  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
185  .addComponent(translatorComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
186  .addComponent(translationServiceLabel))
187  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
188  .addComponent(translationServicePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
189  .addContainerGap())
190  );
191  }// </editor-fold>//GEN-END:initComponents
192 
193  private void translatorComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_translatorComboBoxActionPerformed
194  updatePanel();
195  }//GEN-LAST:event_translatorComboBoxActionPerformed
196 
197 
198  // Variables declaration - do not modify//GEN-BEGIN:variables
199  private javax.swing.JLabel translationOptionsDescription;
200  private javax.swing.JLabel translationServiceLabel;
201  private javax.swing.JPanel translationServicePanel;
202  private javax.swing.JComboBox<String> translatorComboBox;
203  // End of variables declaration//GEN-END:variables
204 
205 }
synchronized static Logger getLogger(String name)
Definition: Logger.java:124
TranslationOptionsPanel(TranslationOptionsPanelController theController)

Copyright © 2012-2018 Basis Technology. Generated on: Fri Jun 21 2019
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.