Clipboard as a Bean

This commit is contained in:
serso 2016-01-31 10:35:10 +01:00
parent 654f4b8809
commit 030a93cce5
9 changed files with 23 additions and 127 deletions

View File

@ -121,7 +121,6 @@ public class CalculatorApplication extends android.app.Application implements Sh
Locator.getInstance().init(calculator, Locator.getInstance().init(calculator,
engine, engine,
new AndroidCalculatorClipboard(this),
new AndroidCalculatorNotifier(this), new AndroidCalculatorNotifier(this),
errorReporter, errorReporter,
new AndroidCalculatorPreferenceService(this), new AndroidCalculatorPreferenceService(this),

View File

@ -1,41 +0,0 @@
/*
* Copyright 2013 serso aka se.solovyev
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Contact details
*
* Email: se.solovyev@gmail.com
* Site: http://se.solovyev.org
*/
package org.solovyev.android.calculator;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
/**
* User: serso
* Date: 9/22/12
* Time: 1:34 PM
*/
public interface CalculatorClipboard {
@Nullable
String getText();
void setText(@Nonnull CharSequence text);
void setText(@Nonnull String text);
}

View File

@ -30,7 +30,6 @@ public interface CalculatorLocator {
void init(@Nonnull Calculator calculator, void init(@Nonnull Calculator calculator,
@Nonnull Engine engine, @Nonnull Engine engine,
@Nonnull CalculatorClipboard clipboard,
@Nonnull CalculatorNotifier notifier, @Nonnull CalculatorNotifier notifier,
@Nonnull ErrorReporter errorReporter, @Nonnull ErrorReporter errorReporter,
@Nonnull CalculatorPreferenceService preferenceService, @Nonnull CalculatorPreferenceService preferenceService,
@ -46,9 +45,6 @@ public interface CalculatorLocator {
@Nonnull @Nonnull
Keyboard getKeyboard(); Keyboard getKeyboard();
@Nonnull
CalculatorClipboard getClipboard();
@Nonnull @Nonnull
CalculatorNotifier getNotifier(); CalculatorNotifier getNotifier();

View File

@ -27,40 +27,36 @@ import android.content.Context;
import android.text.ClipboardManager; import android.text.ClipboardManager;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.inject.Inject;
import javax.inject.Singleton;
/** @Singleton
* User: serso public class Clipboard {
* Date: 9/22/12 @SuppressWarnings("deprecation")
* Time: 1:35 PM
*/
public class AndroidCalculatorClipboard implements CalculatorClipboard {
@Nonnull @Nonnull
private final Context context; private final ClipboardManager clipboard;
public AndroidCalculatorClipboard(@Nonnull Application application) { @SuppressWarnings("deprecation")
this.context = application; @Inject
public Clipboard(@Nonnull Application application) {
clipboard = (ClipboardManager) application.getSystemService(Context.CLIPBOARD_SERVICE);
} }
@Override @SuppressWarnings("deprecation")
@Nonnull
public String getText() { public String getText() {
final ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
if (clipboard.hasText()) { if (clipboard.hasText()) {
return String.valueOf(clipboard.getText()); return String.valueOf(clipboard.getText());
} else {
return null;
} }
return "";
} }
@Override
public void setText(@Nonnull CharSequence text) { public void setText(@Nonnull CharSequence text) {
final ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(text); clipboard.setText(text);
} }
@Override
public void setText(@Nonnull String text) { public void setText(@Nonnull String text) {
final ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(text); clipboard.setText(text);
} }
} }

View File

@ -1,46 +0,0 @@
/*
* Copyright 2013 serso aka se.solovyev
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Contact details
*
* Email: se.solovyev@gmail.com
* Site: http://se.solovyev.org
*/
package org.solovyev.android.calculator;
import javax.annotation.Nonnull;
/**
* User: serso
* Date: 9/22/12
* Time: 2:00 PM
*/
public class DummyCalculatorClipboard implements CalculatorClipboard {
@Override
public String getText() {
return null;
}
@Override
public void setText(@Nonnull CharSequence text) {
}
@Override
public void setText(@Nonnull String text) {
}
}

View File

@ -22,6 +22,7 @@
package org.solovyev.android.calculator; package org.solovyev.android.calculator;
import android.text.TextUtils;
import org.solovyev.android.calculator.math.MathType; import org.solovyev.android.calculator.math.MathType;
import org.solovyev.common.text.Strings; import org.solovyev.common.text.Strings;
@ -38,9 +39,10 @@ public class Keyboard {
@Inject @Inject
Editor editor; Editor editor;
@Inject @Inject
Display display; Display display;
@Inject
Clipboard clipboard;
@Inject @Inject
public Keyboard() { public Keyboard() {
@ -119,8 +121,8 @@ public class Keyboard {
} }
public void pasteButtonPressed() { public void pasteButtonPressed() {
final String text = Locator.getInstance().getClipboard().getText(); final String text = clipboard.getText();
if (text != null) { if (!TextUtils.isEmpty(text)) {
editor.insert(text); editor.insert(text);
} }
} }
@ -134,7 +136,7 @@ public class Keyboard {
if (!displayState.valid) { if (!displayState.valid) {
return; return;
} }
Locator.getInstance().getClipboard().setText(displayState.text); clipboard.setText(displayState.text);
Locator.getInstance().getNotifier().showMessage(CalculatorMessage.newInfoMessage(CalculatorMessages.result_copied)); Locator.getInstance().getNotifier().showMessage(CalculatorMessage.newInfoMessage(CalculatorMessages.result_copied));
} }

View File

@ -41,8 +41,6 @@ public class Locator implements CalculatorLocator {
@Nonnull @Nonnull
private ErrorReporter errorReporter = new SystemErrorReporter(); private ErrorReporter errorReporter = new SystemErrorReporter();
@Nonnull @Nonnull
private CalculatorClipboard calculatorClipboard = new DummyCalculatorClipboard();
@Nonnull
private CalculatorPreferenceService calculatorPreferenceService; private CalculatorPreferenceService calculatorPreferenceService;
@Nonnull @Nonnull
@ -59,7 +57,6 @@ public class Locator implements CalculatorLocator {
@Override @Override
public void init(@Nonnull Calculator calculator, public void init(@Nonnull Calculator calculator,
@Nonnull Engine engine, @Nonnull Engine engine,
@Nonnull CalculatorClipboard clipboard,
@Nonnull CalculatorNotifier notifier, @Nonnull CalculatorNotifier notifier,
@Nonnull ErrorReporter errorReporter, @Nonnull ErrorReporter errorReporter,
@Nonnull CalculatorPreferenceService preferenceService, @Nonnull CalculatorPreferenceService preferenceService,
@ -68,7 +65,6 @@ public class Locator implements CalculatorLocator {
this.calculator = calculator; this.calculator = calculator;
this.engine = engine; this.engine = engine;
this.calculatorClipboard = clipboard;
this.calculatorNotifier = notifier; this.calculatorNotifier = notifier;
this.errorReporter = errorReporter; this.errorReporter = errorReporter;
this.calculatorPreferenceService = preferenceService; this.calculatorPreferenceService = preferenceService;
@ -99,12 +95,6 @@ public class Locator implements CalculatorLocator {
instance.keyboard = keyboard; instance.keyboard = keyboard;
} }
@Override
@Nonnull
public CalculatorClipboard getClipboard() {
return calculatorClipboard;
}
@Override @Override
@Nonnull @Nonnull
public CalculatorNotifier getNotifier() { public CalculatorNotifier getNotifier() {

View File

@ -36,7 +36,7 @@ import java.util.concurrent.Executor;
public class AbstractCalculatorTest { public class AbstractCalculatorTest {
protected void setUp() throws Exception { protected void setUp() throws Exception {
Locator.getInstance().init(new CalculatorImpl(Mockito.mock(Bus.class), Mockito.mock(Executor.class)), CalculatorTestUtils.newCalculatorEngine(), Mockito.mock(CalculatorClipboard.class), Mockito.mock(CalculatorNotifier.class), new SystemErrorReporter(), Mockito.mock(CalculatorPreferenceService.class), Mockito.mock(Keyboard.class), Mockito.mock(CalculatorPlotter.class)); Locator.getInstance().init(new CalculatorImpl(Mockito.mock(Bus.class), Mockito.mock(Executor.class)), CalculatorTestUtils.newCalculatorEngine(), Mockito.mock(CalculatorNotifier.class), new SystemErrorReporter(), Mockito.mock(CalculatorPreferenceService.class), Mockito.mock(Keyboard.class), Mockito.mock(CalculatorPlotter.class));
Locator.getInstance().getEngine().init(new Executor() { Locator.getInstance().getEngine().init(new Executor() {
@Override @Override
public void execute(Runnable command) { public void execute(Runnable command) {

View File

@ -66,7 +66,7 @@ public class CalculatorTestUtils {
public static void staticSetUp() throws Exception { public static void staticSetUp() throws Exception {
App.init(new CalculatorApplication(), new Languages(new RoboSharedPreferences(new HashMap<String, Map<String, Object>>(), "test", 0))); App.init(new CalculatorApplication(), new Languages(new RoboSharedPreferences(new HashMap<String, Map<String, Object>>(), "test", 0)));
Locator.getInstance().init(new CalculatorImpl(Mockito.mock(Bus.class), Mockito.mock(Executor.class)), newCalculatorEngine(), Mockito.mock(CalculatorClipboard.class), Mockito.mock(CalculatorNotifier.class), new SystemErrorReporter(), Mockito.mock(CalculatorPreferenceService.class), Mockito.mock(Keyboard.class), Mockito.mock(CalculatorPlotter.class)); Locator.getInstance().init(new CalculatorImpl(Mockito.mock(Bus.class), Mockito.mock(Executor.class)), newCalculatorEngine(), Mockito.mock(CalculatorNotifier.class), new SystemErrorReporter(), Mockito.mock(CalculatorPreferenceService.class), Mockito.mock(Keyboard.class), Mockito.mock(CalculatorPlotter.class));
Locator.getInstance().getEngine().init(new Executor() { Locator.getInstance().getEngine().init(new Executor() {
@Override @Override
public void execute(Runnable command) { public void execute(Runnable command) {
@ -81,7 +81,7 @@ public class CalculatorTestUtils {
} }
public static void staticSetUp(@Nullable Context context) throws Exception { public static void staticSetUp(@Nullable Context context) throws Exception {
Locator.getInstance().init(new CalculatorImpl(Mockito.mock(Bus.class), Mockito.mock(Executor.class)), newCalculatorEngine(), Mockito.mock(CalculatorClipboard.class), Mockito.mock(CalculatorNotifier.class), new SystemErrorReporter(), Mockito.mock(CalculatorPreferenceService.class), Mockito.mock(Keyboard.class), Mockito.mock(CalculatorPlotter.class)); Locator.getInstance().init(new CalculatorImpl(Mockito.mock(Bus.class), Mockito.mock(Executor.class)), newCalculatorEngine(), Mockito.mock(CalculatorNotifier.class), new SystemErrorReporter(), Mockito.mock(CalculatorPreferenceService.class), Mockito.mock(Keyboard.class), Mockito.mock(CalculatorPlotter.class));
Locator.getInstance().getEngine().init(new Executor() { Locator.getInstance().getEngine().init(new Executor() {
@Override @Override
public void execute(Runnable command) { public void execute(Runnable command) {