merged WidgetBuilder into PerViewerFacadeInjector

master
Stefan Dollase 2017-02-24 20:08:01 +01:00
parent 0968c20de4
commit 92be05527c
4 changed files with 44 additions and 84 deletions

View File

@ -1,6 +1,8 @@
package amidst.dependency.injection;
import java.util.Arrays;
import java.util.List;
import java.util.function.Supplier;
import amidst.AmidstSettings;
import amidst.documentation.AmidstThread;
@ -23,8 +25,18 @@ import amidst.gui.main.viewer.ViewerFacade;
import amidst.gui.main.viewer.ViewerMouseListener;
import amidst.gui.main.viewer.WorldIconSelection;
import amidst.gui.main.viewer.Zoom;
import amidst.gui.main.viewer.widget.BiomeToggleWidget;
import amidst.gui.main.viewer.widget.BiomeWidget;
import amidst.gui.main.viewer.widget.ChangeableTextWidget;
import amidst.gui.main.viewer.widget.CursorInformationWidget;
import amidst.gui.main.viewer.widget.DebugWidget;
import amidst.gui.main.viewer.widget.FpsWidget;
import amidst.gui.main.viewer.widget.FramerateTimer;
import amidst.gui.main.viewer.widget.ScaleWidget;
import amidst.gui.main.viewer.widget.SeedAndWorldTypeWidget;
import amidst.gui.main.viewer.widget.SelectedIconWidget;
import amidst.gui.main.viewer.widget.Widget;
import amidst.gui.main.viewer.widget.WidgetBuilder;
import amidst.gui.main.viewer.widget.Widget.CornerAnchorPoint;
import amidst.gui.main.viewer.widget.WidgetManager;
import amidst.mojangapi.world.World;
import amidst.mojangapi.world.export.WorldExporterFactory;
@ -32,6 +44,34 @@ import amidst.threading.WorkerExecutor;
@NotThreadSafe
public class PerViewerFacadeInjector {
@CalledOnlyBy(AmidstThread.EDT)
private static List<Widget> createWidgets(
World world,
FragmentGraph graph,
FragmentGraphToScreenTranslator translator,
Zoom zoom,
BiomeSelection biomeSelection,
WorldIconSelection worldIconSelection,
LayerReloader layerReloader,
FragmentManager fragmentManager,
Graphics2DAccelerationCounter accelerationCounter,
AmidstSettings settings,
Supplier<String> progressText) {
// @formatter:off
return Arrays.asList(
new ChangeableTextWidget( CornerAnchorPoint.CENTER, progressText),
new FpsWidget( CornerAnchorPoint.BOTTOM_LEFT, new FramerateTimer(2), settings.showFPS),
new ScaleWidget( CornerAnchorPoint.BOTTOM_CENTER, zoom, settings.showScale),
new SeedAndWorldTypeWidget( CornerAnchorPoint.TOP_LEFT, world.getWorldSeed(), world.getWorldType()),
new SelectedIconWidget( CornerAnchorPoint.TOP_LEFT, worldIconSelection),
new DebugWidget( CornerAnchorPoint.BOTTOM_RIGHT, graph, fragmentManager, settings.showDebug, accelerationCounter),
new CursorInformationWidget(CornerAnchorPoint.TOP_RIGHT, graph, translator, settings.dimension),
new BiomeToggleWidget( CornerAnchorPoint.BOTTOM_RIGHT, biomeSelection, layerReloader),
new BiomeWidget( CornerAnchorPoint.NONE, biomeSelection, layerReloader, settings.biomeProfileSelection)
);
// @formatter:on
}
private final Graphics2DAccelerationCounter accelerationCounter;
private final Movement movement;
private final WorldIconSelection worldIconSelection;
@ -41,7 +81,6 @@ public class PerViewerFacadeInjector {
private final FragmentQueueProcessor fragmentQueueProcessor;
private final LayerReloader layerReloader;
private final WorldExporterFactory worldExporterFactory;
private final WidgetBuilder widgetBuilder;
private final List<Widget> widgets;
private final Drawer drawer;
private final WidgetManager widgetManager;
@ -69,7 +108,7 @@ public class PerViewerFacadeInjector {
this.fragmentQueueProcessor = fragmentManager.createQueueProcessor(layerManager, settings.dimension);
this.layerReloader = layerManager.createLayerReloader(world);
this.worldExporterFactory = new WorldExporterFactory(workerExecutor, world);
this.widgetBuilder = new WidgetBuilder(
this.widgets = createWidgets(
world,
graph,
translator,
@ -81,7 +120,6 @@ public class PerViewerFacadeInjector {
accelerationCounter,
settings,
worldExporterFactory::getProgressMessage);
this.widgets = widgetBuilder.create();
this.drawer = new Drawer(
graph,
translator,

View File

@ -14,7 +14,7 @@ public class ChangeableTextWidget extends TextWidget {
private final Supplier<String> text;
@CalledOnlyBy(AmidstThread.EDT)
protected ChangeableTextWidget(CornerAnchorPoint anchor, Supplier<String> text) {
public ChangeableTextWidget(CornerAnchorPoint anchor, Supplier<String> text) {
super(anchor);
this.text = text;
}

View File

@ -14,7 +14,7 @@ public abstract class TextWidget extends Widget {
private boolean isVisible = false;
@CalledOnlyBy(AmidstThread.EDT)
protected TextWidget(CornerAnchorPoint anchor) {
public TextWidget(CornerAnchorPoint anchor) {
super(anchor);
setWidth(20);
setHeight(30);

View File

@ -1,78 +0,0 @@
package amidst.gui.main.viewer.widget;
import java.util.Arrays;
import java.util.List;
import java.util.function.Supplier;
import amidst.AmidstSettings;
import amidst.documentation.AmidstThread;
import amidst.documentation.CalledOnlyBy;
import amidst.documentation.NotThreadSafe;
import amidst.fragment.FragmentGraph;
import amidst.fragment.FragmentManager;
import amidst.fragment.layer.LayerReloader;
import amidst.gui.main.viewer.BiomeSelection;
import amidst.gui.main.viewer.FragmentGraphToScreenTranslator;
import amidst.gui.main.viewer.Graphics2DAccelerationCounter;
import amidst.gui.main.viewer.WorldIconSelection;
import amidst.gui.main.viewer.Zoom;
import amidst.gui.main.viewer.widget.Widget.CornerAnchorPoint;
import amidst.mojangapi.world.World;
@NotThreadSafe
public class WidgetBuilder {
private final World world;
private final FragmentGraph graph;
private final FragmentGraphToScreenTranslator translator;
private final Zoom zoom;
private final BiomeSelection biomeSelection;
private final WorldIconSelection worldIconSelection;
private final LayerReloader layerReloader;
private final FragmentManager fragmentManager;
private final Graphics2DAccelerationCounter accelerationCounter;
private final AmidstSettings settings;
private final Supplier<String> progressText;
@CalledOnlyBy(AmidstThread.EDT)
public WidgetBuilder(
World world,
FragmentGraph graph,
FragmentGraphToScreenTranslator translator,
Zoom zoom,
BiomeSelection biomeSelection,
WorldIconSelection worldIconSelection,
LayerReloader layerReloader,
FragmentManager fragmentManager,
Graphics2DAccelerationCounter accelerationCounter,
AmidstSettings settings,
Supplier<String> progressText) {
this.world = world;
this.graph = graph;
this.translator = translator;
this.zoom = zoom;
this.biomeSelection = biomeSelection;
this.worldIconSelection = worldIconSelection;
this.layerReloader = layerReloader;
this.fragmentManager = fragmentManager;
this.accelerationCounter = accelerationCounter;
this.settings = settings;
this.progressText = progressText;
}
@CalledOnlyBy(AmidstThread.EDT)
public List<Widget> create() {
// @formatter:off
return Arrays.asList(
new ChangeableTextWidget( CornerAnchorPoint.CENTER, progressText),
new FpsWidget( CornerAnchorPoint.BOTTOM_LEFT, new FramerateTimer(2), settings.showFPS),
new ScaleWidget( CornerAnchorPoint.BOTTOM_CENTER, zoom, settings.showScale),
new SeedAndWorldTypeWidget( CornerAnchorPoint.TOP_LEFT, world.getWorldSeed(), world.getWorldType()),
new SelectedIconWidget( CornerAnchorPoint.TOP_LEFT, worldIconSelection),
new DebugWidget( CornerAnchorPoint.BOTTOM_RIGHT, graph, fragmentManager, settings.showDebug, accelerationCounter),
new CursorInformationWidget(CornerAnchorPoint.TOP_RIGHT, graph, translator, settings.dimension),
new BiomeToggleWidget( CornerAnchorPoint.BOTTOM_RIGHT, biomeSelection, layerReloader),
new BiomeWidget( CornerAnchorPoint.NONE, biomeSelection, layerReloader, settings.biomeProfileSelection)
);
// @formatter:on
}
}