/******************************************************************************* * See the NOTICE file distributed with this work for additional information * regarding copyright ownership. * * 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. ******************************************************************************/ package hr.fer.zemris.vhdllab.applets.editor.schema2.interfaces; import hr.fer.zemris.vhdllab.applets.editor.schema2.enums.ECanvasState; import hr.fer.zemris.vhdllab.applets.editor.schema2.misc.Caseless; import java.beans.PropertyChangeListener; /** * Sučelje koje opisuje controller u lokalnom MVC-u za GUI schematica. * * @author ddelac * */ public interface ILocalGuiController { /** * Ovom metodom dodaje se novi PropertyChangeListener na controller. Ovom se * listeneru javljaju samo specifične promjene zadane properyName imenom. * * @param propertyName * ime properya na kojeg se ovaj listener registrira * @param listener * razred koji implementira {@link PropertyChangeListener} */ public void addListener(String propertyName, PropertyChangeListener listener); /** * Ovom metodom dodaje se novi PropertyChangeListener na controller. Ovom se * listeneru javljaju sve promjene na bilokojem od polja controllera, tj * obavještava se u trenutku poziva bilokojeg od settera nad ovim * controllerom. * * @param listener * razred koji implementira {@link PropertyChangeListener} */ public void addListener(PropertyChangeListener listener); /** * Metoda vrača komponentu koja se treba dodati. U ovom polju mora se * pohraniti identifikator za komponentu koju canvas u trenutku manipulacije * gumba na mišu mora dodati u model instrukcijom: {@link ICommand}. * * @return identifikator komponente za dodati */ public Caseless getComponentToAdd(); /** * Metoda postavlja polje componentToAdd u modelu i javlja listenerima da se * neko od polja promjenilo. * * @param componentToAdd * identifikator komponente u schematicu. */ public void setComponentToAdd(Caseless componentToAdd); /** * U polju selectedComponent predviđeno je da canvas postavi ime komponente * koja je trenutno selektirana te da toolbar pomoću tog imena može iz * modela dohvatiti komponentu. (pošto je ime komponente unikatno za svaku * komponentu). * * @return naziv (identifikator instance) selektirane komponente. */ public Caseless getSelectedComponent(); /** * Metoda postavlja polje selectedComponent. Ovu metodu će vjerojatno * pozivati Canvas, a obavjestit će sve listenere o promjeni. * @param selectedComponent selektirana komponenta * @param selectionType tip selekcije (komponenta, zica ili nista_selektirano) */ public void setSelectedComponent(Caseless selectedComponent, int selectionType); /** * Dohvaća stanje rada u kojem je trenutno Canvas. Stanje rada predstavlja * trenutnu funkciju canvasa na manipulacije mišem. * * @return Stanje rada u kojem se canvas trenutno nalazi */ public ECanvasState getState(); /** * Metoda postavlja novo stanje rada canvasu. Primjer: korisnik odabere da * će dodati neku komponentu u model, toolbar poziva prvo * setComponentToAdd(ime); pa potom * setState(CanvasState.ADD_COMPONENT_STATE); U tom trenutku canvas će preči * u novo stanje rada, pročitati polje componentToAdd i biti spreman za rad. * * @param state * neki od CanvasState-ova */ public void setState(ECanvasState state); /** * Vraca tip selektiranog objekta na platnu (wire, component ili nista od selektiranog) * 0-komponenta * 1-zica * 2-nista nije selektirano */ public int getSelectedType(); public boolean isGridON(); public void setGridON(boolean gridON); public void setSmartConectON(boolean smartConectON); public boolean isSmartConectON(); }