Shop

Einen Shop anlegen

Zu Beginn wird der Shop erzeugt, der Kern der Anwendung. Mit start() bekommt man ihn zum Laufen.

import sale.Shop;

public class MainClass {

  public static void main(String[] args) {
    SalesPointApplication spa = new SalesPointApplication();
    Shop.setTheShop(spa);
    spa.start();
  }
}
import sale.Shop;

public class SalesPointApplication extends Shop {

  public SalesPointApplication() {
    super();
  }
}

Verhalten beim Starten

Beim Starten der Anwendung können diverse Voreinstellungen von SalesPoint verändert werden. Um ein Logfile zu bestimmen wird die start()-Methode des Shops überschrieben. Die Größe und Position des Shopfensters lässt sich mit setShopFrameBounds(Rectangle) festlegen.

import sale.Shop;
import java.awt.Rectangle;

public class MainClass {

  public static void main(String[] args) {
    SalesPointApplication spa = new SalesPointApplication();
    Shop.setTheShop(spa);
    spa.setShopFrameBounds(new Rectangle(100,200,400,300));		
    spa.start();
  }
}
import sale.Shop;
import log.Log;
import java.io.*; //IOException, FileOutputStream

public class SalesPointApplication extends Shop {

  public SalesPointApplication() {
    super();
  }

  public void start() {
    super.start();
    try {
      Log.setGlobalOutputStream(new FileOutputStream("logfile.log",true));
    }
    catch (IOException ioex) {
      System.err.println("Unable to create log file.");
    }
  }
}

Verhalten beim Schließen

Wenn die Anwendung geschlossen wird, öffnet SalesPoint automatisch einen Speichern-Dialog um den aktuellen Status der Anwendung zu sichern. Wenn das nicht gewünscht wird lässt sich dieses Verhalten leicht ändern. Es ist die quit()-Methode des Shops zu überschreiben.

Mit shutdown(boolean) wird versucht, alle laufenden Prozesse zu beenden und das Shopfenster zu schließen. Hatte dies Erfolg wird true zurückgeliefert. Als Argument wird erwartet, ob der Speicherdialog erscheinen soll oder nicht. Es ist zu beachten, dass das Programm nach dem Schließen des Shops noch nicht beendet ist. Die exit-Methode ist manuell aufzurufen.

import sale.Shop;
import log.Log;
import java.io.*; //IOException, FileOutputStream

public class SalesPointApplication extends Shop {

  public SalesPointApplication() {
    super();
  }

  public void start() {
    super.start();
    try {
      Log.setGlobalOutputStream(new FileOutputStream("logfile.log",true));
    }
    catch (IOException ioex) {
      System.err.println("Unable to create log file.");
    }
  }
	
  public void quit() {
    if (shutdown (false)) {
      System.exit(0);
    }
  }
}

Das Shopmenu

Um das Menu anzupassen ist die Methode createShopMenuSheet() zu überschreiben (siehe auch: Menus).

Eine Besonderheit ist die Möglichkeit, das originale Menu des Shops oder Teile davon zu behalten: super.createShopMenuSheet() liefert das Standardmenu des Shops. Mittels getTaggedItem(String, boolean) lassen sich Teile davon zurückgeben.

import sale.*; //Shop, MenuSheet, MenuSheetItem
import log.Log;
import java.io.*; //IOException, FileOutputStream

public class SalesPointApplication extends Shop {

  public SalesPointApplication() {
    super();
  }

  public void start() {
    super.start();
    try {
      Log.setGlobalOutputStream(new FileOutputStream("logfile.log",true));
    }
    catch (IOException ioex) {
      System.err.println("Unable to create log file.");
    }
  }
	
  public void quit() {
    if (shutdown (false)) {
      System.exit(0);
    }
  }

  protected MenuSheet createShopMenuSheet() {
    MenuSheet msMenuBar = new MenuSheet("MenuBar");
    MenuSheet msMenu1 = (MenuSheet)super.createShopMenuSheet().getTaggedItem(Shop.SHOP_MENU_TAG, false);
    MenuSheet msMenu2 = new MenuSheet("NeuesMenu");
    MenuSheetItem msiItem1 = new MenuSheetItem ("MenuItem 1", null);
    msMenuBar.add(msMenu1);
    msMenuBar.add(msMenu2);
    msMenu2.add(msiItem1);
    return msMenuBar;
  }
}