/*
* This file is part of LaTeXDraw.
* Copyright (c) 2005-2017 Arnaud BLOUIN
* LaTeXDraw is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later version.
* LaTeXDraw is distributed without any warranty; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*/
package net.sf.latexdraw;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import net.sf.latexdraw.instruments.AboutController;
import net.sf.latexdraw.instruments.Border;
import net.sf.latexdraw.instruments.CodeInserter;
import net.sf.latexdraw.instruments.CodePanelController;
import net.sf.latexdraw.instruments.CopierCutterPaster;
import net.sf.latexdraw.instruments.DrawingPropertiesCustomiser;
import net.sf.latexdraw.instruments.EditingSelector;
import net.sf.latexdraw.instruments.ExceptionsManager;
import net.sf.latexdraw.instruments.Exporter;
import net.sf.latexdraw.instruments.FileLoaderSaver;
import net.sf.latexdraw.instruments.Hand;
import net.sf.latexdraw.instruments.Helper;
import net.sf.latexdraw.instruments.MetaShapeCustomiser;
import net.sf.latexdraw.instruments.Pencil;
import net.sf.latexdraw.instruments.PreferencesSetter;
import net.sf.latexdraw.instruments.ShapeArcCustomiser;
import net.sf.latexdraw.instruments.ShapeArrowCustomiser;
import net.sf.latexdraw.instruments.ShapeAxesCustomiser;
import net.sf.latexdraw.instruments.ShapeBorderCustomiser;
import net.sf.latexdraw.instruments.ShapeCoordDimCustomiser;
import net.sf.latexdraw.instruments.ShapeDeleter;
import net.sf.latexdraw.instruments.ShapeDotCustomiser;
import net.sf.latexdraw.instruments.ShapeDoubleBorderCustomiser;
import net.sf.latexdraw.instruments.ShapeFillingCustomiser;
import net.sf.latexdraw.instruments.ShapeFreeHandCustomiser;
import net.sf.latexdraw.instruments.ShapeGridCustomiser;
import net.sf.latexdraw.instruments.ShapeGrouper;
import net.sf.latexdraw.instruments.ShapePlotCustomiser;
import net.sf.latexdraw.instruments.ShapePositioner;
import net.sf.latexdraw.instruments.ShapeRotationCustomiser;
import net.sf.latexdraw.instruments.ShapeShadowCustomiser;
import net.sf.latexdraw.instruments.ShapeStdGridCustomiser;
import net.sf.latexdraw.instruments.ShapeTextCustomiser;
import net.sf.latexdraw.instruments.ShapeTransformer;
import net.sf.latexdraw.instruments.ShortcutsController;
import net.sf.latexdraw.instruments.StatusBarController;
import net.sf.latexdraw.instruments.TabSelector;
import net.sf.latexdraw.instruments.TemplateManager;
import net.sf.latexdraw.instruments.TextSetter;
import net.sf.latexdraw.instruments.UndoRedoManager;
import net.sf.latexdraw.instruments.Zoomer;
import net.sf.latexdraw.models.interfaces.shape.IDrawing;
import net.sf.latexdraw.ui.XScaleRuler;
import net.sf.latexdraw.ui.YScaleRuler;
import net.sf.latexdraw.view.MagneticGrid;
import net.sf.latexdraw.view.ViewsSynchroniserHandler;
import net.sf.latexdraw.view.jfx.Canvas;
import net.sf.latexdraw.view.latex.LaTeXGenerator;
import net.sf.latexdraw.view.pst.PSTCodeGenerator;
/**
* @author Arnaud Blouin
*/
public class LatexdrawModule extends AbstractModule {
@Override
protected void configure() {
bind(Canvas.class).asEagerSingleton();
bind(StatusBarController.class).asEagerSingleton();
bind(PSTCodeGenerator.class).asEagerSingleton();
bind(AboutController.class).asEagerSingleton();
bind(Border.class).asEagerSingleton();
bind(CodeInserter.class).asEagerSingleton();
bind(CopierCutterPaster.class).asEagerSingleton();
bind(CodePanelController.class).asEagerSingleton();
bind(DrawingPropertiesCustomiser.class).asEagerSingleton();
bind(EditingSelector.class).asEagerSingleton();
bind(ExceptionsManager.class).asEagerSingleton();
bind(Exporter.class).asEagerSingleton();
bind(FileLoaderSaver.class).asEagerSingleton();
bind(Hand.class).asEagerSingleton();
bind(Helper.class).asEagerSingleton();
bind(MetaShapeCustomiser.class).asEagerSingleton();
bind(Pencil.class).asEagerSingleton();
bind(PreferencesSetter.class).asEagerSingleton();
bind(ShapeArcCustomiser.class).asEagerSingleton();
bind(ShapeArrowCustomiser.class).asEagerSingleton();
bind(ShapeAxesCustomiser.class).asEagerSingleton();
bind(ShapeBorderCustomiser.class).asEagerSingleton();
bind(ShapeCoordDimCustomiser.class).asEagerSingleton();
bind(ShapeDeleter.class).asEagerSingleton();
bind(ShapeDotCustomiser.class).asEagerSingleton();
bind(ShapeDoubleBorderCustomiser.class).asEagerSingleton();
bind(ShapeFillingCustomiser.class).asEagerSingleton();
bind(ShapeFreeHandCustomiser.class).asEagerSingleton();
bind(ShapeGridCustomiser.class).asEagerSingleton();
bind(ShapeGrouper.class).asEagerSingleton();
bind(ShapePlotCustomiser.class).asEagerSingleton();
bind(ShapePositioner.class).asEagerSingleton();
bind(ShapeRotationCustomiser.class).asEagerSingleton();
bind(ShapeShadowCustomiser.class).asEagerSingleton();
bind(ShapeStdGridCustomiser.class).asEagerSingleton();
bind(ShapeTextCustomiser.class).asEagerSingleton();
bind(ShapeTransformer.class).asEagerSingleton();
bind(ShortcutsController.class).asEagerSingleton();
bind(TabSelector.class).asEagerSingleton();
bind(TemplateManager.class).asEagerSingleton();
bind(TextSetter.class).asEagerSingleton();
bind(XScaleRuler.class).asEagerSingleton();
bind(YScaleRuler.class).asEagerSingleton();
bind(UndoRedoManager.class).asEagerSingleton();
bind(Zoomer.class).asEagerSingleton();
}
@Provides
IDrawing provideDrawing(final Canvas canvas) {
return canvas.getDrawing();
}
@Provides
ViewsSynchroniserHandler provideViewsSynchroniserHandler(final Canvas canvas) {
return canvas;
}
@Provides
LaTeXGenerator provideLaTeXGenerator(final PSTCodeGenerator gen) {
return gen;
}
@Provides
MagneticGrid provideMagneticGrid(final Canvas canvas) {
return canvas.getMagneticGrid();
}
}