diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/MessageContentViewer.java b/Core/src/org/sleuthkit/autopsy/contentviewers/MessageContentViewer.java index 6e1d718324..ae26576c35 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/MessageContentViewer.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/MessageContentViewer.java @@ -20,6 +20,7 @@ package org.sleuthkit.autopsy.contentviewers; import org.sleuthkit.autopsy.datamodel.AttachmentNode; import com.google.gson.Gson; +import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.util.Arrays; @@ -131,6 +132,7 @@ public class MessageContentViewer extends javax.swing.JPanel implements DataCont drp = DataResultPanel.createInstanceUninitialized(Bundle.MessageContentViewer_AtrachmentsPanel_title(), "", new TableFilterNode(Node.EMPTY, false), 0, null); attachmentsScrollPane.setViewportView(drp); + //textPanel.setLayout(new BorderLayout()); msgbodyTabbedPane.insertTab( NbBundle.getMessage(MessageContentViewer.class, "MessageContentViewer.textbodyScrollPane.TabConstraints.tabTitle"), null, diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/TextTranslatableComponent.java b/Core/src/org/sleuthkit/autopsy/contentviewers/TextTranslatableComponent.java index d188720a49..653efba23a 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/TextTranslatableComponent.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/TextTranslatableComponent.java @@ -47,9 +47,11 @@ final class TextTranslatableComponent implements TranslatablePanel.TranslatableC textComponent.setLineWrap(true); textComponent.setRows(5); textComponent.setWrapStyleWord(true); + JScrollPane parentComponent = new JScrollPane(); parentComponent.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); parentComponent.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); + //parentComponent.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); parentComponent.setViewportView(textComponent); this.parentComponent = parentComponent; this.textComponent = textComponent; @@ -77,6 +79,7 @@ final class TextTranslatableComponent implements TranslatablePanel.TranslatableC private boolean setPanelContent(String content) { try { textComponent.setText(content == null ? "" : content); + textComponent.setCaretPosition(0); return true; } catch (Exception e) { LOGGER.log(Level.WARNING, "There was an error in setting up the text for MessageContentViewer text panel", e); diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/TranslatablePanel.form b/Core/src/org/sleuthkit/autopsy/contentviewers/TranslatablePanel.form index 384414b26e..45eb156e87 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/TranslatablePanel.form +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/TranslatablePanel.form @@ -29,7 +29,7 @@ - + @@ -49,18 +49,22 @@ - + - - + + + + + + - + @@ -70,20 +74,20 @@ - - + + - - + + - - + + diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/TranslatablePanel.java b/Core/src/org/sleuthkit/autopsy/contentviewers/TranslatablePanel.java index 53d6d25941..107dae8cb1 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/TranslatablePanel.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/TranslatablePanel.java @@ -19,15 +19,19 @@ package org.sleuthkit.autopsy.contentviewers; import java.awt.Component; +import javax.swing.ImageIcon; import org.apache.commons.lang.StringUtils; import javax.swing.JPanel; import javax.swing.SwingUtilities; import org.openide.util.NbBundle.Messages; +import org.sleuthkit.autopsy.texttranslation.TextTranslationService; /** * A panel for translation with a subcomponent that allows for translation */ final class TranslatablePanel extends JPanel { + + /** * an option in drop down of whether or not to translate */ @@ -86,11 +90,12 @@ final class TranslatablePanel extends JPanel { private static final long serialVersionUID = 1L; + private final ImageIcon warningIcon = new ImageIcon(TranslatablePanel.class.getResource("/org/sleuthkit/autopsy/images/warning16.png")); private final TranslatableComponent subcomponent; private final String origOptionText; private final String translatedOptionText; - + private final TextTranslationService translationService; @Messages({"TranslatablePanel.comboBoxOption.originalText=Original Text", "TranslatablePanel.comboBoxOption.translatedText=Translated Text"}) @@ -99,29 +104,40 @@ final class TranslatablePanel extends JPanel { subcomponent, Bundle.TranslatablePanel_comboBoxOption_originalText(), Bundle.TranslatablePanel_comboBoxOption_translatedText(), - null); + null, + TextTranslationService.getInstance()); } /** * Creates new form TranslatedContentPanel */ - TranslatablePanel(TranslatableComponent subcomponent, String origOptionText, String translatedOptionText, String origContent) { + TranslatablePanel(TranslatableComponent subcomponent, String origOptionText, String translatedOptionText, String origContent, + TextTranslationService translationService) { this.subcomponent = subcomponent; this.origOptionText = origOptionText; this.translatedOptionText = translatedOptionText; + this.translationService = translationService; initComponents(); - additionalInit(origContent); + additionalInit(); + setTranslationBarVisible(); + setContent(origContent); } private void setWarningLabelMsg(String msg) { - warningLabel.setText(msg); - warningLabel.setVisible(StringUtils.isEmpty(msg)); + boolean hasWarning = !StringUtils.isEmpty(msg); + warningLabel.setText(hasWarning ? msg : ""); + warningLabel.setIcon(hasWarning ? warningIcon : null); } + private void setTranslationBarVisible() { + translationBar.setVisible(this.translationService.hasProvider()); + } + void reset() { + setTranslationBarVisible(); setContent(null); } @@ -135,13 +151,12 @@ final class TranslatablePanel extends JPanel { - private void additionalInit(String origContent) { + private void additionalInit() { add(this.subcomponent.getComponent(), java.awt.BorderLayout.CENTER); setWarningLabelMsg(null); translateComboBox.removeAllItems(); translateComboBox.addItem(new TranslateOption(this.origOptionText, false)); translateComboBox.addItem(new TranslateOption(this.translatedOptionText, true)); - this.subcomponent.setContent(origContent); } private void handleComboBoxChange(TranslateOption translateOption) { @@ -160,9 +175,8 @@ final class TranslatablePanel extends JPanel { @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { - java.awt.GridBagConstraints gridBagConstraints; - jPanel1 = new javax.swing.JPanel(); + translationBar = new javax.swing.JPanel(); translateComboBox = new javax.swing.JComboBox<>(); warningLabel = new javax.swing.JLabel(); @@ -173,37 +187,26 @@ final class TranslatablePanel extends JPanel { setVerifyInputWhenFocusTarget(false); setLayout(new java.awt.BorderLayout()); - jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder()); - jPanel1.setMaximumSize(new java.awt.Dimension(182, 24)); - jPanel1.setPreferredSize(new java.awt.Dimension(182, 24)); - jPanel1.setLayout(new java.awt.GridBagLayout()); + translationBar.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + translationBar.setMaximumSize(new java.awt.Dimension(182, 24)); + translationBar.setPreferredSize(new java.awt.Dimension(182, 24)); + translationBar.setLayout(new java.awt.BorderLayout()); - translateComboBox.setMinimumSize(new java.awt.Dimension(43, 20)); - translateComboBox.setPreferredSize(new java.awt.Dimension(43, 20)); + translateComboBox.setMaximumSize(new java.awt.Dimension(200, 20)); + translateComboBox.setMinimumSize(new java.awt.Dimension(200, 20)); + translateComboBox.setName(""); // NOI18N + translateComboBox.setPreferredSize(new java.awt.Dimension(200, 20)); translateComboBox.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { translateComboBoxActionPerformed(evt); } }); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 3; - gridBagConstraints.gridy = 0; - gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; - gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; - gridBagConstraints.weightx = 0.1; - gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 0); - jPanel1.add(translateComboBox, gridBagConstraints); + translationBar.add(translateComboBox, java.awt.BorderLayout.LINE_END); - warningLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/warning16.png"))); // NOI18N - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 0; - gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; - gridBagConstraints.weightx = 0.25; - jPanel1.add(warningLabel, gridBagConstraints); + warningLabel.setMaximumSize(new java.awt.Dimension(32767, 32767)); + translationBar.add(warningLabel, java.awt.BorderLayout.CENTER); - add(jPanel1, java.awt.BorderLayout.NORTH); + add(translationBar, java.awt.BorderLayout.NORTH); }// //GEN-END:initComponents private void translateComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_translateComboBoxActionPerformed @@ -211,8 +214,8 @@ final class TranslatablePanel extends JPanel { }//GEN-LAST:event_translateComboBoxActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JPanel jPanel1; private javax.swing.JComboBox translateComboBox; + private javax.swing.JPanel translationBar; private javax.swing.JLabel warningLabel; // End of variables declaration//GEN-END:variables } \ No newline at end of file