Interface biblioteki Lordui

Interface biblioteki Lordui ogranicza się praktycznie do jednej klasy:
 ktm.lordui.Lordui
. Instację klasy Lordui uzyskuje się wołając statyczną metodę createInstance. Można stworzyć tylko jedną instancję klasy Lordui - każde kolejne wywołanie metody createInstance zwróci ten sam obiekt co przy pierwszym wywołaniu. Po zakończeniu pracy należy zaś wywołać metodę close. Poniżej znajduje się lista dostępnych funkcji na obiekcie klasy Lordui:
  1. public final void loadProject(File luiFile) throws IOException - wczytuje projekt z podanego pliku *.lui,
  2. public final void setValue(String name, Object value) - zapisuje w Lordui dany obiekt (tj. klasy Window, int, String czy Point) pod podaną zmienną globalną,
  3. public final Object getValue(String name) - pobiera z Lordui obiekt z podanej zmiennej globalnej,
  4. public final void runProcedure(String procedureName) - uruchamia podaną procedurę,
  5. public final void runProcedureAndWait(String procedureName) - uruchamia podaną procedurę. Funkcja runProcedureAndWait zakończy działanie dopiero gdy odtwarzacz na którym została uruchomiona podana procedura zakończy działanie wszystkich procedur,
  6. public static final Lordui createInstance() - tworzy instancję klasy Lordui,
  7. public final void close() - zakończenie pracy z biblioteką Lordui. Bez wywołania tej metody, Lordui może nieprawidłowo zwolnić zasoby. Po wywołaniu tej procedury nie należy już więcej wykorzystywać obiektu Lordui, ani wywoływać funkcji Lordui:createInstance,
  8. public final void setVisible(boolean visible) - pokazuje/ukrywa okno edytora Lordui.

W ten sposób przykładowy kod wykorzystujący Lordui jako bibliotekę ogranicza się do:

public class LorduiLibraryUsage {
  private Lordui lui;
  
  public void useLordui() {
    lui = Lordui.createInstance();
    try {
      lui.loadProject(new File("myLorduiProcedureFile.lui"));
    } catch (IOException e) {
      e.printStackTrace();
      return;
    }

    //Tutaj należy umieścić kod wyświetlający naszą aplikację np:
    try {
      SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
          JFrame fr = new JFrame("Test window");
          fr.setSize(800, 600);
          fr.setVisible(true);
        }
      });
    } catch (InvocationTargetException e) {
      e.printStackTrace();
      return;
    } catch (InterruptedException e) {
      e.printStackTrace();
      return;
    }
    
    lui.runProcedureAndWait("LorduiProcedureName");
    lui.close();
  }
}

krzys 2017-07-19