Övning 3 - grupp 10 Övningen gick ut på att sortera givna funktionerna till ett ritprogram in i en meny. Den startsidan vi fick var blank och såg ut som nedan. I denna skulle vi skapa en meny med hjälp av java kod. Vi börjada med att skriva ner alla funktioner under Where to put these (bilden ovan) på lappar innan vi sorterade dem. Vi parade ihop syskon funktioner som till exempel undo och redo.
Vi försökte finna ett system att gruppera funktionerna logisk. Vad som är logiskt för användaren har mycket att göra med vad han/hon är van med. Vi tog i betraktning hur menyer generellt är uppbyggda i Ms system och olika ritprogram. Där indelas meny rullgardinerna i fil påverkande funktioner, till dokument påverkande funktioner och vidare med olika verktyg som specifierar respektive program. Meny raden, skriven från vänster till höger i samma riktning som engelska läser i, avslutas med Help längst till höger. Efterhand fick vi ett system som vi tyckte var väl anpassat. Vi renskrev kladden (nedan) och började programmera menyerna.
Vi valde att gruppera funktionerna i File, Edit, Image, Tools, Color och Help. Det är grupper som vi anser vara mest logiska för att användaren ska kunna navigera sig smidigast möjligt och för att varje grupp eller rullgardin ska bli lagom lång. Funktionerna i gruppen File påverkar filen. Vi valde att lägga dessa i samma kronologiska ordning som de troligen kommer användas. Man öppnar ett dokument innan man sparar det. Man sparar förhoppningsvis dokumentet innan man skriver ut, exporterar eller avslutar det.
I gruppen Edit ligger funktioner som påverkar innhållet i dokumentet (till skillnad till file som påverkar hela dokumentet som en enhet). Vi la Undo högt upp då denna används ofta. Redo används inte lika ofta, kanske mer sällan än de andra funktionerna men den ligger tillsammans med sitt syskon för att lätt hittas när den behövs. Ordningen på de resterande funktionerna i gruppen är densamma som i mer välkända program för att användaren ska känna igen sig. Image innehåller funktioner som påverkar själva bilden. (Men inte innehållet i bilden). Syskon grupperingen var klar men vi tvekade lite på den inbördes ordningen dessa imellan. Vi la tillsist funktionerna i en ordning som vi tror är med den mest använda funktionen högst upp. Funktionen Watermark används normalt sett inte så ofta och för att listan inte skulle bli så lång så la vi valen till denna funktion i en egen klickbar undermeny. Funktionerna i gruppen Tools påverkar bildet i sig. Här finns rit verktyg som pensel, sudd och olika geometriska figurer. Den inbördes ordningen var inte direkt tydlig för oss. Vi valde att göra tre indelningar med verktyg som till viss del påminner om varandras egenskaper, är avhängig av den andra eller är den totala motsatsen till varandra (den ena tar ut den andra). Ritverktygen blev en grupp, förflyttningar den andra och sist de geometriska figurerna som blev en egen grupp. Beskrivningen av indelningen kan verka rörig men vi blev nöjd med resultatet.
Gruppen färger är normalt i ritprogram ingen egen grupp men i vårt uppdrag skulle tretton färger finnas representerade i menyn. Vi valde för att inte göra en annan rullgardin för lång en egen grupp med färger. Indelnigen blev överst de två kontrastfärger som används mest, svart och vit. Efter följer RGB färger ordnade i regnbågsskalan och till sist gråtonerna, från ljus till mörk. Help är en standgrupp där man finner vägledning och förklaring till programmet och dess funktioner. Här kan du också få veta mer om programmet som program och uppdatera dig med nya versioner. Help funktionen ligger som standard högst upp. Java kod för vårt program: package id.gi.simpledraw; import java.awt.*; import javax.swing. *; public class SimpleDraw extends JFrame { DrawArea drawarea; // Fields of different menues public static int MENU_QUIT = 1000;
public static int MENU_CLEAR_CANVAS = 5000; public static int MENU_HELP = 6000; public static int MENU_ABOUT = 6001; public static int MENU_REGISTER = 6002; public static int MENU_UPDATE = 6003; public static int MENU_BLUR = 7000; public static int MENU_ZOOM_IN = 7001; public static int MENU_ZOOM_OUT = 7002; public static int MENU_MIRROR_VERTICAL = 7003; public static int MENU_MIRROR_HORIZONTAL = 7004; public static int MENU_RESIZE_CANVAS = 104; public static int MENU_COLOR_CYAN = 2000; public static int MENU_COLOR_MAGENTA = 2001; public static int MENU_COLOR_RED = 2002; public static int MENU_COLOR_BLUE = 2003; public static int MENU_COLOR_YELLOW = 2004; public static int MENU_COLOR_GREEN = 2005; public static int MENU_COLOR_ORANGE = 2006; public static int MENU_COLOR_WHITE = 2007; public static int MENU_COLOR_LIGHT_GRAY = 2008; public static int MENU_COLOR_GRAY = 2009; public static int MENU_COLOR_BLACK = 2010; public static int MENU_COLOR_DARK_GRAY = 2011; public static int MENU_COLOR_PINK = 2012; public static int MENU_UNDO = 2013; public static int MENU_REDO = 2014; public static int MENU_CROP = 2015; public static int MENU_CHECK_WATERMARK = 2016; public static int MENU_REMOVE_WATERMARK = 2017; public static int MENU_SAVE = 2018; public static int MENU_ADD_WATERMARK = 2019; public static int MENU_OPEN = 2020; public static int MENU_OPEN_LATEST = 2021; public static int MENU_SAVE_AS = 2022; public static int MENU_PRINT = 2023; public static int MENU_PRINT_SETUP = 2024; public static int MENU_EXPORT = 2025; public static int MENU_SIMPLEDRAW_ASSISTANT = 2026; public static int MENU_CUT = 2027; public static int MENU_PASTE_SPECIAL = 2028; public static int MENU_COPY = 2030; public static int MENU_PASTE = 2031; public static int MENU_IMAGE_ATTRIBUTES = 2032; public static int MENU_BRUSH = 3001; public static int MENU_ERASER = 3002; public static int MENU_BRUSH_LARGE = 3003; public static int MENU_PICK_COLOR = 3004; public static int MENU_RECTANGLE = 3005; public static int MENU_ELLIPSE = 3006; public static int MENU_ARC = 3007; public static int MENU_LINE = 3008; public static int MENU_MARK = 3009; public SimpleDraw() { // Makes the application exit when the frame is closed setdefaultcloseoperation(exit_on_close); // Sets the size of the frame setsize(800,600); // Creates a new DrawArea object, sets its size adds it to the contentpane drawarea = new DrawArea(); drawarea.setpreferredsize(new Dimension(800,600)); // Create a pane which provides scollbars for the panel if needed JScrollPane jsp = new JScrollPane(drawArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); getcontentpane().add(jsp);
JMenuBar menubar = new JMenuBar( ); setmenues(menubar); setjmenubar(menubar); setvisible(true); }; // THIS IS THE ONLY METHOD THAT YOU HAVE TO MODIFY private void setmenues(jmenubar menubar) { // Temporary menu so that all menues have some place JMenu jm = new JMenu("Trash"); JMenu file = new JMenu("File"); JMenu image = new JMenu("Image"); JMenu edit = new JMenu("Edit"); JMenu help = new JMenu("Help"); JMenu tools = new JMenu("Tools") ; JMenu color = new JMenu("Color") ; JMenu watermark = new JMenu("Watermark"); color.add(drawarea.getmenu(menu_color_black)); color.add(drawarea.getmenu(menu_color_white)); color.addseparator(); color.add(drawarea.getmenu(menu_color_red)); color.add(drawarea.getmenu(menu_color_orange)); color.add(drawarea.getmenu(menu_color_yellow)); color.add(drawarea.getmenu(menu_color_green)); color.add(drawarea.getmenu(menu_color_cyan)); color.add(drawarea.getmenu(menu_color_blue)); color.add(drawarea.getmenu(menu_color_magenta)); color.add(drawarea.getmenu(menu_color_pink)); color.addseparator(); color.add(drawarea.getmenu(menu_color_light_gray)); color.add(drawarea.getmenu(menu_color_gray)); color.add(drawarea.getmenu(menu_color_dark_gray)); tools.add(drawarea.getmenu(menu_brush)); tools.add(drawarea.getmenu(menu_brush_large)); tools.add(drawarea.getmenu(menu_pick_color)); tools.add(drawarea.getmenu(menu_eraser)); tools.addseparator(); tools.add(drawarea.getmenu(menu_mark)); tools.add(drawarea.getmenu(menu_crop)); tools.addseparator(); tools.add(drawarea.getmenu(menu_line)); tools.add(drawarea.getmenu(menu_rectangle)); tools.add(drawarea.getmenu(menu_ellipse)); tools.add(drawarea.getmenu(menu_arc)); image.add(drawarea.getmenu(menu_zoom_in)); image.add(drawarea.getmenu(menu_zoom_out)); image.addseparator(); image.add(drawarea.getmenu(menu_mirror_horizontal) ); image.add(drawarea.getmenu(menu_mirror_vertical)); image.addseparator(); image.add(drawarea.getmenu(menu_blur)); // Riktig blur image.addseparator(); image.add(drawarea.getmenu(menu_resize_canvas)); image.add(drawarea.getmenu(menu_clear_canvas)); image.addseparator(); watermark.add(drawarea.getmenu(menu_add_watermark)); watermark.add(drawarea.getmenu(menu_check_watermark)); watermark.add(drawarea.getmenu(menu_remove_watermark)); edit.add(drawarea.getmenu(menu_undo)); edit.add(drawarea.getmenu(menu_redo)); edit.addseparator(); edit.add(drawarea.getmenu(menu_cut)); edit.add(drawarea.getmenu(menu_copy));
edit.add(drawarea.getmenu(menu_paste)); edit.add(drawarea.getmenu(menu_paste_special)); file.add(drawarea.getmenu(menu_open)); file.add(drawarea.getmenu(menu_open_latest)); file.addseparator(); file.add(drawarea.getmenu(menu_save)); file.add(drawarea.getmenu(menu_save_as)); file.addseparator(); file.add(drawarea.getmenu(menu_print_setup)); file.add(drawarea.getmenu(menu_print)); file.addseparator(); file.add(drawarea.getmenu(menu_export)); file.addseparator(); file.add(drawarea.getmenu(menu_quit)); help.add(drawarea.getmenu(menu_help)); help.add(drawarea.getmenu(menu_simpledraw_assistant)); help.addseparator(); help.add(drawarea.getmenu(menu_about)); help.add(drawarea.getmenu(menu_update)); help.add(drawarea.getmenu(menu_register)); menubar.add(file); menubar.add(edit); menubar.add(image); menubar.add(tools); menubar.add(color); menubar.add(help); image.add(watermark); }; static public void main(string argv[]) { }; }; SimpleDraw simpledraw = new SimpleDraw(); Vem gjorde vad: Niklas sorterade, grupperade och placerade funktionerna. Jenny - sorterade, grupperade och placerade funktionerna. Skapade rapporten (denna sidan). Johan kodade Java. Evelina, Marie och Mia kodade Java