/* * PlanView.java 28 oct 2008 * * Sweet Home 3D, Copyright (c) 2008 Emmanuel PUYBARET / eTeks <info@eteks.com> * * This program 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. * * This program is distributed in the hope that it will be useful, * but 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. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package com.eteks.sweethome3d.viewcontroller; import java.util.List; import com.eteks.sweethome3d.model.DimensionLine; import com.eteks.sweethome3d.model.Selectable; import com.eteks.sweethome3d.model.TextStyle; /** * The view that displays the plan of a home. * @author Emmanuel Puybaret */ public interface PlanView extends View { /** * The cursor types available in plan view. */ public enum CursorType {SELECTION, PANNING, DRAW, ROTATION, ELEVATION, HEIGHT, POWER, RESIZE, DUPLICATION, MOVE} /** * Sets rectangle selection feedback coordinates. */ public abstract void setRectangleFeedback(float x0, float y0, float x1, float y1); /** * Ensures selected items are visible at screen and moves * scroll bars if needed. */ public abstract void makeSelectionVisible(); /** * Ensures the point at (<code>x</code>, <code>y</code>) is visible, * moving scroll bars if needed. */ public abstract void makePointVisible(float x, float y); /** * Returns the scale used to display the plan. */ public abstract float getScale(); /** * Sets the scale used to display the plan. */ public abstract void setScale(float scale); /** * Moves the view from (dx, dy) unit in the scrolling zone it belongs to. */ public abstract void moveView(float dx, float dy); /** * Returns <code>x</code> converted in model coordinates space. */ public abstract float convertXPixelToModel(int x); /** * Returns <code>y</code> converted in model coordinates space. */ public abstract float convertYPixelToModel(int y); /** * Returns <code>x</code> converted in screen coordinates space. */ public abstract int convertXModelToScreen(float x); /** * Returns <code>y</code> converted in screen coordinates space. */ public abstract int convertYModelToScreen(float y); /** * Returns the length in centimeters of a pixel with the current scale. */ public abstract float getPixelLength(); /** * Returns the coordinates of the bounding rectangle of the <code>text</code> displayed at * the point (<code>x</code>,<code>y</code>). */ public abstract float [][] getTextBounds(String text, TextStyle style, float x, float y, float angle); /** * Sets the cursor of this component as rotation cursor. */ public abstract void setCursor(CursorType cursorType); /** * Sets tool tip text displayed as feedback. * @param toolTipFeedback the text displayed in the tool tip * or <code>null</code> to make tool tip disappear. */ public abstract void setToolTipFeedback(String toolTipFeedback, float x, float y); /** * Set properties edited in tool tip. */ public abstract void setToolTipEditedProperties(PlanController.EditableProperty [] toolTipEditedProperties, Object [] toolTipPropertyValues, float x, float y); /** * Deletes tool tip text from screen. */ public abstract void deleteToolTipFeedback(); /** * Sets whether the resize indicator of selected wall or piece of furniture * should be visible or not. */ public abstract void setResizeIndicatorVisible(boolean resizeIndicatorVisible); /** * Sets the location point for alignment feedback. */ public abstract void setAlignmentFeedback(Class<? extends Selectable> alignedObjectClass, Selectable alignedObject, float x, float y, boolean showPoint); /** * Sets the points used to draw an angle in plan view. */ public abstract void setAngleFeedback(float xCenter, float yCenter, float x1, float y1, float x2, float y2); /** * Sets the feedback of dragged items drawn during a drag and drop operation, * initiated from outside of plan view. */ public abstract void setDraggedItemsFeedback(List<Selectable> draggedItems); /** * Sets the given dimension lines to be drawn as feedback. */ public abstract void setDimensionLinesFeedback(List<DimensionLine> dimensionLines); /** * Deletes all elements shown as feedback. */ public abstract void deleteFeedback(); /** * Returns the component used as an horizontal ruler for this plan. */ public abstract View getHorizontalRuler(); /** * Returns the component used as a vertical ruler for this plan. */ public abstract View getVerticalRuler(); /** * Returns <code>true</code> if this plan accepts to import dragged items at the given coordinates. */ public abstract boolean canImportDraggedItems(List<Selectable> items, int x, int y); }