Skip to content

Commit

Permalink
Inlined TranslationPresenter, removed .impl package
Browse files Browse the repository at this point in the history
  • Loading branch information
Vogel612 committed Sep 22, 2015
1 parent 61e8444 commit 272bf06
Show file tree
Hide file tree
Showing 8 changed files with 160 additions and 185 deletions.
9 changes: 4 additions & 5 deletions src/main/java/de/vogel612/helper/Main.java
Expand Up @@ -3,11 +3,10 @@
import de.vogel612.helper.ui.OverviewModel;
import de.vogel612.helper.ui.OverviewPresenter;
import de.vogel612.helper.ui.OverviewView;
import de.vogel612.helper.ui.OverviewModelImpl;
import de.vogel612.helper.ui.OverviewPresenterImpl;
import de.vogel612.helper.ui.OverviewViewImpl;
import de.vogel612.helper.ui.TranslationPresenter;
import de.vogel612.helper.ui.impl.OverviewModelImpl;
import de.vogel612.helper.ui.impl.OverviewPresenterImpl;
import de.vogel612.helper.ui.impl.OverviewViewImpl;
import de.vogel612.helper.ui.impl.TranslationPresenterImpl;

import java.nio.file.Path;
import java.nio.file.Paths;
Expand Down Expand Up @@ -37,7 +36,7 @@ public static void main(final String[] args) {
return;
}

TranslationPresenter tp = new TranslationPresenterImpl();
TranslationPresenter tp = new TranslationPresenter();
OverviewModel m = new OverviewModelImpl();
OverviewView v = new OverviewViewImpl();

Expand Down
@@ -1,4 +1,4 @@
package de.vogel612.helper.ui.impl;
package de.vogel612.helper.ui;

import org.jdom2.Document;
import org.jdom2.Element;
Expand All @@ -10,8 +10,6 @@
import org.jdom2.xpath.XPathExpression;
import org.jdom2.xpath.XPathFactory;
import de.vogel612.helper.data.Translation;
import de.vogel612.helper.ui.OverviewModel;
import de.vogel612.helper.ui.OverviewPresenter;

import java.io.IOException;
import java.io.OutputStream;
Expand Down
@@ -1,4 +1,4 @@
package de.vogel612.helper.ui.impl;
package de.vogel612.helper.ui;

import de.vogel612.helper.data.Side;
import de.vogel612.helper.data.Translation;
Expand All @@ -21,8 +21,7 @@ public class OverviewPresenterImpl implements OverviewPresenter {

private boolean initialized = false;

public OverviewPresenterImpl(final OverviewModel m, final OverviewView v,
final TranslationPresenter p) {
public OverviewPresenterImpl(final OverviewModel m, final OverviewView v, final TranslationPresenter p) {
model = m;
view = v;
translationPresenter = p;
Expand Down
@@ -1,4 +1,4 @@
package de.vogel612.helper.ui.impl;
package de.vogel612.helper.ui;

import static de.vogel612.helper.ui.util.UiBuilder.addToGridBag;
import static java.awt.GridBagConstraints.BOTH;
Expand Down
158 changes: 152 additions & 6 deletions src/main/java/de/vogel612/helper/ui/TranslationPresenter.java
@@ -1,6 +1,12 @@
package de.vogel612.helper.ui;

import de.vogel612.helper.data.Translation;
import de.vogel612.helper.ui.OverviewPresenter;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

/**
* <p>
Expand All @@ -10,7 +16,7 @@
* </p>
* <p>
* <pre>
* TranslationPresenter tp = new TranslationPresenterImpl();
* TranslationPresenter tp = new TranslationPresenter();
* tp.register(this);
* tp.setRequestedTranslation(translation);
* </pre>
Expand All @@ -27,13 +33,153 @@
* @implNote Implementation will not happen with an additional separated View
* interface, since there is in no way enough View-Logic to justify it
*/
public interface TranslationPresenter {
public class TranslationPresenter {

private static final Dimension WINDOW_SIZE = new Dimension(600, 200);
private static final String TITLE_FORMAT = "Translating - %s to %s";
private final JFrame window;
private final JTextField input;
private final JButton submit;
private final JButton cancel;

private final JLabel rootValueLabel;

private OverviewPresenter overview;
private Translation translation;

public TranslationPresenter() {
window = new JFrame("Translate:");
input = new JTextField();
submit = new JButton("okay");
cancel = new JButton("cancel");

rootValueLabel = new JLabel();

doLayout();

}

private void doLayout() {
window.setMinimumSize(WINDOW_SIZE);
window.setPreferredSize(WINDOW_SIZE);
window.setSize(WINDOW_SIZE);
window.setLayout(new GridBagLayout());

addRootValueLabel();
addInputText();
addCancel();
addSubmit();
}

private void addSubmit() {
GridBagConstraints constraints = new GridBagConstraints();
constraints.weightx = 1.0;
constraints.insets = new Insets(15, 15, 15, 15);
constraints.fill = GridBagConstraints.BOTH;
constraints.gridx = 1;
constraints.gridy = 2;
constraints.weighty = 0.33;
window.add(submit, constraints);
}

private void addCancel() {
GridBagConstraints constraints = new GridBagConstraints();
constraints.weightx = 1.0;
constraints.insets = new Insets(15, 15, 15, 15);
constraints.fill = GridBagConstraints.BOTH;
constraints.gridx = 0;
constraints.gridy = 2;
constraints.weighty = 0.33;
constraints.gridwidth = 1;
window.add(cancel, constraints);
}

private void addInputText() {
GridBagConstraints constraints = new GridBagConstraints();
constraints.weightx = 1.0;
constraints.insets = new Insets(15, 15, 15, 15);
constraints.fill = GridBagConstraints.BOTH;
constraints.gridx = 0;
constraints.gridy = 1;
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weighty = 0.33;
window.add(input, constraints);

input.addKeyListener(new KeyListener() {

@Override
public void keyPressed(final KeyEvent event) {
switch (event.getKeyCode()) {
case KeyEvent.VK_ESCAPE:
cancel.doClick();
break;
case KeyEvent.VK_ENTER:
handleEnter(event);
break;
default:
break;
}
}

private void handleEnter(final KeyEvent event) {
if (event.isShiftDown()) {
int caret = input.getCaretPosition();
String newValue = input.getText();
newValue = newValue.substring(0, caret) + "\r\n"
+ newValue.substring(caret);
input.setText(newValue);
} else {
submit.doClick();
}
}

@Override
public void keyReleased(final KeyEvent event) {
// Ignore, bubbles to default
}

@Override
public void keyTyped(final KeyEvent event) {
// Ignore, bubbles to default
}

});
}

private void addRootValueLabel() {
GridBagConstraints constraints = new GridBagConstraints();
constraints.weightx = 1.0;
constraints.insets = new Insets(15, 15, 15, 15);
constraints.fill = GridBagConstraints.BOTH;
constraints.gridx = 0;
constraints.gridy = 0;
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weighty = 0.33;

window.add(rootValueLabel, constraints);
}

void register(OverviewPresenter p);
public void register(final OverviewPresenter p) {
overview = p;
}

void show();
public void show() {
window.setVisible(true);
}

void hide();
public void hide() {
window.setVisible(false);
}

void setRequestedTranslation(Translation left, Translation right);
public void setRequestedTranslation(Translation left, Translation right) {
this.translation = right;
this.rootValueLabel.setText(left.getValue());
input.setText(translation.getValue());
submit.addActionListener(event -> {
translation.setValue(input.getText());
overview.onTranslationSubmit(translation);
});
cancel.addActionListener(event -> overview.onTranslationAbort());
window.setTitle(String.format(TITLE_FORMAT, translation.getKey(), translation.getLocale()));
}
}

0 comments on commit 272bf06

Please sign in to comment.