Changeset 145


Ignore:
Timestamp:
07/16/08 18:10:56 (16 years ago)
Author:
ra33
Message:
 
Location:
trunk/src/org/expeditee
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/expeditee/gui/AttributeUtils.java

    r121 r145  
    178178                                        pColor));
    179179                        _SetMethods.put("fc", Item.class.getMethod("setFillColor", pColor));
    180 
     180                        _SetMethods.put("gc", Item.class.getMethod("setGradientColor", pColor));
     181                        _SetMethods.put("gradientcolor", Item.class.getMethod("setGradientColor",
     182                                        pColor));
     183                       
    181184                        _SetMethods.put("fillpattern", Item.class.getMethod(
    182185                                        "setFillPattern", pString));
  • trunk/src/org/expeditee/gui/Browser.java

    r142 r145  
    55import java.awt.Graphics;
    66import java.awt.Graphics2D;
     7import java.awt.MouseInfo;
     8import java.awt.Point;
    79import java.awt.RenderingHints;
    810import java.awt.Toolkit;
     
    6870                                _theBrowser = new Browser();
    6971                                _theBrowser.requestFocus();
     72                                FrameMouseActions.MouseX = MouseInfo.getPointerInfo().getLocation().x - _theBrowser.getOrigin().x;
     73                                FrameMouseActions.MouseY = MouseInfo.getPointerInfo().getLocation().y - _theBrowser.getOrigin().y;
    7074                        }
    7175                });
    7276
     77        }
     78       
     79        public Point getOrigin() {
     80                return getContentPane().getLocationOnScreen();
    7381        }
    7482       
  • trunk/src/org/expeditee/gui/ColorUtils.java

    r108 r145  
    1313         *            the color wheel from which to find the next color
    1414         * @param skip
    15          *            a color to ignore, for example the current background color when getting the next foreground color or
    16          *            null if no colors should be skipped
     15         *            a color to ignore, for example the current background color
     16         *            when getting the next foreground color or null if no colors
     17         *            should be skipped
    1718         * @return the next color on the color wheel
    1819         */
    1920        public static Color getNextColor(Color color, Color[] wheel, Color skip) {
    20                 if (color == null)
    21                         return wheel[0];
    22                 // search through the colour wheel to find the next colour
    23                 int pos = -1;
    24                 for (int i = 0; i < wheel.length; i++) {
    25                         if (color.equals(wheel[i])) {
    26                                 pos = i;
    27                                 break;
     21                if (color == null) {
     22                        color = wheel[0];
     23                } else {
     24                        // search through the colour wheel to find the next colour
     25                        int pos = -1;
     26                        for (int i = 0; i < wheel.length; i++) {
     27                                if (color.equals(wheel[i])) {
     28                                        pos = i;
     29                                        break;
     30                                }
    2831                        }
     32                        pos++;
     33                        pos = pos % wheel.length;
     34                        color = wheel[pos];
    2935                }
    30                 pos++;
    31                 pos = pos % wheel.length;
    32                 color = wheel[pos];
    33 
     36               
    3437                if (skip != null && skip.equals(color))
    3538                        return getNextColor(color, wheel, skip);
  • trunk/src/org/expeditee/gui/DisplayIO.java

    r143 r145  
    370370                                        .getInstance().clone();
    371371                        FreeItems.getInstance().clear(); // NOTE: This will invalidate
    372                                                                                                 // all the cleared free items
     372                        // all the cleared free items
    373373                        FrameGraphics.refresh(true);
    374374                        FreeItems.getInstance().addAll(tmp);
    375375
    376376                }
    377                
     377
    378378                // Changing frames is a Save point for saveable entities:
    379379                EntitySaveManager.getInstance().saveAll();
     
    733733                setTextCursor((Text) i, Text.END, true);
    734734        }
     735
     736        public static void translateCursor(int deltaX, int deltaY) {
     737                setCursorPosition(FrameMouseActions.MouseX + deltaX,
     738                                FrameMouseActions.MouseY + deltaY, false);
     739        }
    735740}
  • trunk/src/org/expeditee/gui/Frame.java

    r143 r145  
    11421142        public void clearOverlays() {
    11431143                for (Overlay o : _overlays.keySet()) {
    1144                         removeOverlay(o.Frame);
    1145                 }
     1144                        for (Item i : o.Frame.getItems()) {
     1145                                i
     1146                                                .onParentStateChanged(new ItemParentStateChangedEvent(
     1147                                                                this,
     1148                                                                ItemParentStateChangedEvent.EVENT_TYPE_REMOVED_VIA_OVERLAY,
     1149                                                                o.permission));
     1150                        }
     1151                }
     1152                _overlayItems.clear();
     1153                _overlays.clear();
    11461154                assert (_overlays.isEmpty());
    11471155        }
  • trunk/src/org/expeditee/gui/FrameKeyboardActions.java

    r143 r145  
    55import java.awt.datatransfer.DataFlavor;
    66import java.awt.datatransfer.StringSelection;
     7import java.awt.event.InputEvent;
    78import java.awt.event.KeyEvent;
    89import java.awt.event.KeyListener;
     10import java.awt.event.MouseEvent;
    911import java.awt.geom.Point2D;
    1012import java.util.ArrayList;
     
    297299         */
    298300        public void keyPressed(KeyEvent e) {
    299                 SessionStats.AddFrameEvent("k" + KeyEvent.getKeyText(e.getKeyCode()));
     301                int keyCode = e.getKeyCode();
     302                SessionStats.AddFrameEvent("k" + KeyEvent.getKeyText(keyCode));
    300303
    301304                FrameUtils.ResponseTimer.restart();
    302                 e.consume();
     305                //e.consume();
    303306
    304307                if (Actions.isAgentRunning()) {
    305                         if (e.getKeyCode() == KeyEvent.VK_ESCAPE)
     308                        if (keyCode == KeyEvent.VK_ESCAPE)
    306309                                Actions.stopAgent();
    307310                        else
     
    312315                }
    313316
    314                 if (e.getKeyCode() >= KeyEvent.VK_F1
    315                                 && e.getKeyCode() <= KeyEvent.VK_F12) {
    316                         functionKey(FunctionKey.values()[e.getKeyCode() - KeyEvent.VK_F1
    317                                         + 1], e.isShiftDown(), e.isControlDown());
    318                         return;
    319                 } else if (e.isControlDown() && e.getKeyCode() != KeyEvent.VK_CONTROL) {
    320                         controlChar(e.getKeyCode(), e.isShiftDown());
    321                         return;
    322                 }
    323 
    324                 // Do escape last so Ctl+Escape does not perform DropDown
    325                 if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
     317                if (keyCode >= KeyEvent.VK_F1 && keyCode <= KeyEvent.VK_F12) {
     318                        functionKey(FunctionKey.values()[keyCode - KeyEvent.VK_F1 + 1], e
     319                                        .isShiftDown(), e.isControlDown());
     320                        return;
     321                } else if (e.isAltDown()) {
     322                        int distance = e.isShiftDown() ? 5 : 20;
     323                        switch (keyCode) {
     324                        case KeyEvent.VK_1:
     325                                DisplayIO.pressMouse(InputEvent.BUTTON1_MASK);
     326                                break;
     327                        case KeyEvent.VK_2:
     328                                DisplayIO.pressMouse(InputEvent.BUTTON2_MASK);
     329                                break;
     330                        case KeyEvent.VK_3:
     331                                DisplayIO.pressMouse(InputEvent.BUTTON3_MASK);
     332                                break;
     333                        case KeyEvent.VK_LEFT:
     334                                DisplayIO.translateCursor(-distance, 0);
     335                                break;
     336                        case KeyEvent.VK_RIGHT:
     337                                DisplayIO.translateCursor(distance, 0);
     338                                break;
     339                        case KeyEvent.VK_UP:
     340                                DisplayIO.translateCursor(0, -distance);
     341                                break;
     342                        case KeyEvent.VK_DOWN:
     343                                DisplayIO.translateCursor(0, distance);
     344                                break;
     345                        }
     346                        return;
     347                } else if (e.isControlDown()) {
     348                        if (keyCode == KeyEvent.VK_CONTROL) {
     349                                FrameMouseActions.control(e);
     350                        } else {
     351                                controlChar(e.getKeyCode(), e.isShiftDown());
     352                        }
     353                        return;
     354                }
     355
     356                switch (keyCode) {
     357                case KeyEvent.VK_ESCAPE:
     358                        // Do escape after control so Ctl+Escape does not perform DropDown
    326359                        functionKey(FunctionKey.DropDown, false, false);
    327360                        SessionStats.Escape();
    328                         return;
    329                 }
    330 
    331                 switch (e.getKeyCode()) {
    332                 case KeyEvent.VK_CONTROL:
    333                         FrameMouseActions.control(e);
    334361                        break;
    335362                case KeyEvent.VK_LEFT:
     
    452479                if (e.getKeyCode() == KeyEvent.VK_CONTROL) {
    453480                        FrameMouseActions.control(e);
     481                } else if (e.isAltDown()) {
     482                        switch (e.getKeyCode()) {
     483                        case KeyEvent.VK_1:
     484                                DisplayIO.releaseMouse(InputEvent.BUTTON1_MASK);
     485                                break;
     486                        case KeyEvent.VK_2:
     487                                DisplayIO.releaseMouse(InputEvent.BUTTON2_MASK);
     488                                break;
     489                        case KeyEvent.VK_3:
     490                                DisplayIO.releaseMouse(InputEvent.BUTTON3_MASK);
     491                                break;
     492                        }
    454493                }
    455494        }
     
    476515                        return;
    477516
    478                 Text text = (Text)on;
     517                Text text = (Text) on;
    479518                String string = text.copySelectedText();
    480                
    481                 if(string == null || string.length() == 0)
     519
     520                if (string == null || string.length() == 0)
    482521                        string = text.getText();
    483                
     522
    484523                // add the text of the item to the clipboard
    485524                StringSelection selection = new StringSelection(string);
     
    507546                Item current = FrameUtils.getCurrentItem();
    508547                Frame currentFrame = DisplayIO.getCurrentFrame();
    509                 // Link or delink an item
    510                 if (key == KeyEvent.VK_L) {
     548                int distance = isShiftDown ? 5 : 20;
     549                switch (key) {
     550                case KeyEvent.VK_1:
     551                        DisplayIO.pressMouse(InputEvent.BUTTON1_MASK);
     552                        break;
     553                case KeyEvent.VK_2:
     554                        DisplayIO.pressMouse(InputEvent.BUTTON2_MASK);
     555                        break;
     556                case KeyEvent.VK_3:
     557                        DisplayIO.pressMouse(InputEvent.BUTTON3_MASK);
     558                        break;
     559                case KeyEvent.VK_LEFT:
     560                        DisplayIO.translateCursor(-distance, 0);
     561                        break;
     562                case KeyEvent.VK_RIGHT:
     563                        DisplayIO.translateCursor(distance, 0);
     564                        break;
     565                case KeyEvent.VK_UP:
     566                        DisplayIO.translateCursor(0, -distance);
     567                        break;
     568                case KeyEvent.VK_DOWN:
     569                        DisplayIO.translateCursor(0, distance);
     570                        break;
     571                case KeyEvent.VK_L:
    511572                        // If its not linked then link it to its self
    512573                        if (current instanceof Text && current.getLink() == null) {
    513574                                String text = ((Text) current).getText();
    514                                 //Ignore the annotation if there is one
    515                                 if(text.charAt(0)== '@')
     575                                // Ignore the annotation if there is one
     576                                if (text.charAt(0) == '@')
    516577                                        text = text.substring(1);
    517                                
     578
    518579                                if (FrameIO.isValidFrameName(text)) {
    519580                                        current.setLink(text);
     
    525586                                current.setLink(null);
    526587                        }
    527                 } else if (key == KeyEvent.VK_G) {
     588                        break;
     589                case KeyEvent.VK_G:
    528590                        // If its not linked then link it to its self
    529591                        if (current instanceof Text) {
     
    542604                                return;
    543605                        }
    544                 } else if (key == KeyEvent.VK_A) {
     606                        break;
     607                case KeyEvent.VK_A:
    545608                        // If its not linked then link it to its self
    546609                        if (current instanceof Text) {
     
    565628                                }
    566629                        }
    567                 } else if (key == KeyEvent.VK_V) {
     630                        break;
     631                case KeyEvent.VK_V:
    568632                        try {
    569633                                // read in the data from the clipboard
     
    587651                                        List<Item> clipboard = new ArrayList<Item>();
    588652                                        clipboard.add(text);
    589                                         FrameMouseActions.merge(clipboard,
    590                                                         clicked);
     653                                        FrameMouseActions.merge(clipboard, clicked);
    591654                                        text.delete();
    592655                                } else {
     
    617680                        }
    618681                        // if this is a copy command
    619                 } else if (key == KeyEvent.VK_C) {
     682                        break;
     683                case KeyEvent.VK_C:
    620684                        if (current == null)
    621685                                return;
     
    654718                        Refresh();
    655719                        return;
    656                 } else if (key == KeyEvent.VK_X) {
     720                case KeyEvent.VK_X:
    657721                        if (current == null)
    658722                                return;
     
    663727                        }
    664728                        copyItemToClipboard(current);
    665                         if(current instanceof Text && ((Text)current).hasSelection()){
    666                                 ((Text)current).cutSelectedText();
    667                                 ((Text)current).clearSelection();
    668                         }else{
    669                         FrameMouseActions.delete(current);
    670                         }
    671                         return;
    672                 } else if (key == KeyEvent.VK_M) {
     729                        if (current instanceof Text && ((Text) current).hasSelection()) {
     730                                ((Text) current).cutSelectedText();
     731                                ((Text) current).clearSelection();
     732                        } else {
     733                                FrameMouseActions.delete(current);
     734                        }
     735                        return;
     736                case KeyEvent.VK_M:
    673737                        if (current == null)
    674738                                return;
     
    682746                        current.setLinkMark(newValue);
    683747                        current.setActionMark(newValue);
    684                 } else if (key == KeyEvent.VK_Z) {
     748                        break;
     749                case KeyEvent.VK_Z:
    685750                        DisplayIO.getCurrentFrame().undo();
    686751                        return;
    687                 } else if (key == KeyEvent.VK_D) {
     752                case KeyEvent.VK_D:
    688753                        // perform a delete operation
    689754                        processChar((char) KeyEvent.VK_DELETE, isShiftDown);
    690                 } else if (key == KeyEvent.VK_DELETE) {
     755                        break;
     756                case KeyEvent.VK_DELETE:
    691757                        // perform a delete operation
    692758                        FrameMouseActions.delete(current);
    693                 } else if (key == KeyEvent.VK_F) {
     759                        break;
     760                case KeyEvent.VK_SPACE:
     761                        if (isShiftDown) {
     762                                FrameMouseActions.rightButton();
     763                        } else {
     764                                FrameMouseActions.middleButton();
     765                        }
     766                        break;
     767                case KeyEvent.VK_F:
    694768                        // perform a delete operation
    695769                        Actions.PerformAction(currentFrame, null, "Format");
    696770                        return;
    697                 } else if (key == KeyEvent.VK_J) {
    698 
     771                case KeyEvent.VK_J:
    699772                        Text text = getCurrentTextItem();
    700773                        if (text == null)
     
    706779
    707780                        text.setJustification(Justification.left);
    708                 } else if (key == KeyEvent.VK_S) {
     781                        break;
     782                case KeyEvent.VK_S:
     783                        Text text2 = getCurrentTextItem();
    709784                        // split the current text item
    710                         Text text = getCurrentTextItem();
    711                         if (text == null)
    712                                 return;
    713                         List<String> textLines = text.getTextList();
     785                        if (text2 == null)
     786                                return;
     787                        List<String> textLines = text2.getTextList();
    714788                        if (textLines.size() <= 1)
    715789                                return;
    716790                        // remove all except the first line of text from the item being
    717791                        // split
    718                         text.setText(textLines.get(0));
    719                         int y = text.getY();
     792                        text2.setText(textLines.get(0));
     793                        int y = text2.getY();
    720794                        for (int i = 1; i < textLines.size(); i++) {
    721                                 Text newText = text.copy();
     795                                Text newText = text2.copy();
    722796                                newText.setText(textLines.get(i));
    723797                                y += newText.getBoundsHeight();
     
    728802                                currentFrame.addItem(newText);
    729803                        }
    730                 } else if (key == KeyEvent.VK_ENTER) {
    731                         Item currentItem = FrameUtils.getCurrentItem();
    732                         FrameMouseActions.leftButton(currentItem, FrameUtils
    733                                         .getCurrentItems(currentItem));
    734                         FrameMouseActions.updateCursor();
    735                 } else if (key == KeyEvent.VK_BACK_SPACE) {
     804                        break;
     805                case KeyEvent.VK_ENTER:
     806                        FrameMouseActions.leftButton();
     807                        break;
     808                case KeyEvent.VK_BACK_SPACE:
    736809                        DisplayIO.Back();
     810                        break;
    737811                }
    738812                FrameGraphics.Repaint();
     
    787861                                Collection<Item> connected = firstConnected.getAllConnected();
    788862
    789                                 // only resize lines if they are not surrounding some non line
    790                                 // items
    791                                 // boolean resizeLines = true;
    792                                 // for (Item ip : enclosed) {
    793                                 // if (ip != null) {
    794                                 // if (!(ip instanceof Line) && !(ip.isLineEnd())) {
    795                                 // resizeLines = false;
    796                                 // break;
    797                                 // }
    798                                 // }
    799                                 // }
    800 
    801863                                switch (key) {
    802864                                case SizeUp:
    803                                         // if ((!(firstConnected instanceof Line) &&
    804                                         // !(firstConnected instanceof Dot)))
    805865                                        SetSize(firstConnected, repeat, false, true);
    806866                                        break;
    807867                                case SizeDown:
    808                                         // if ((!(firstConnected instanceof Line) &&
    809                                         // !(firstConnected instanceof Dot)))
    810868                                        SetSize(firstConnected, -repeat, false, true);
    811869                                        break;
     
    813871                                        if (connected.size() > 0) {
    814872                                                for (Item d : lineEnds) {
    815                                                         SetFillColor(d, isShiftDown);
     873                                                        if (isControlDown)
     874                                                                SetGradientColor(d, isShiftDown);
     875                                                        else
     876                                                                SetFillColor(d, isShiftDown);
    816877                                                        break;
    817878                                                }
     
    13611422                if (item == null)
    13621423                        return;
    1363                
     1424
    13641425                if (!item.hasPermission(Permission.full)) {
    13651426                        MessageBay
    1366                                         .displayMessage("Insufficient permission to the frame's background color");
     1427                                        .displayMessage("Insufficient permission to change fill color");
    13671428                        return;
    13681429                }
     
    13731434                        color = null;
    13741435                else
    1375                         color = ColorUtils.getNextColor(color, Item.FILL_COLOR_WHEEL, null);
     1436                        color = ColorUtils.getNextColor(color, Item.FILL_COLOR_WHEEL, toSet
     1437                                        .getGradientColor());
    13761438
    13771439                // if (color == null) {
     
    13801442
    13811443                toSet.setFillColor(color);
     1444                toSet.getParent().setChanged(true);
     1445
     1446                FrameGraphics.Repaint();
     1447        }
     1448
     1449        private static void SetGradientColor(Item item, boolean setTransparent) {
     1450                if (item == null)
     1451                        return;
     1452
     1453                if (!item.hasPermission(Permission.full)) {
     1454                        MessageBay
     1455                                        .displayMessage("Insufficient permission to change gradient color");
     1456                        return;
     1457                }
     1458
     1459                Item toSet = item;
     1460                Color color = toSet.getGradientColor();
     1461                if (setTransparent)
     1462                        color = null;
     1463                else
     1464                        color = ColorUtils.getNextColor(color, Item.FILL_COLOR_WHEEL, toSet
     1465                                        .getFillColor());
     1466
     1467                // if (color == null) {
     1468                // MessageBay.displayMessage("FillColor is now transparent");
     1469                // }
     1470
     1471                toSet.setGradientColor(color);
    13821472                toSet.getParent().setChanged(true);
    13831473
     
    14311521                        // Toggling color of circle center changes the circle fill color
    14321522                        if (item.hasEnclosures()) {
    1433                                 SetFillColor(item.getEnclosures().iterator().next(),
    1434                                                 setTransparent);
     1523                                if (setBackgroundColor) {
     1524                                        SetGradientColor(item.getEnclosures().iterator().next(),
     1525                                                        setTransparent);
     1526                                } else {
     1527                                        SetFillColor(item.getEnclosures().iterator().next(),
     1528                                                        setTransparent);
     1529                                }
    14351530                        } else if (setBackgroundColor) {
    14361531                                color = item.getPaintBackgroundColor();
  • trunk/src/org/expeditee/gui/FrameMouseActions.java

    r143 r145  
    610610         * This method handles all left-click actions
    611611         */
    612         public static void leftButton(Item clicked, Collection<Item> clickedIn) {
     612        private static void leftButton(Item clicked, Collection<Item> clickedIn) {
    613613                // if the user is pointing at something then either follow the link or
    614614                // do TDFC
     
    730730        }
    731731
     732        public static void middleButton() {
     733                Item currentItem = FrameUtils.getCurrentItem();
     734                middleButton(currentItem, FrameUtils
     735                                .getCurrentItems(currentItem));
     736                updateCursor();
     737        }
     738       
     739        public static void rightButton() {
     740                Item currentItem = FrameUtils.getCurrentItem();
     741                rightButton(currentItem, FrameUtils
     742                                .getCurrentItems(currentItem));
     743                updateCursor();
     744        }
     745       
     746        public static void leftButton() {
     747                Item currentItem = FrameUtils.getCurrentItem();
     748                leftButton(currentItem, FrameUtils
     749                                .getCurrentItems(currentItem));
     750                updateCursor();
     751        }
     752       
    732753        /**
    733754         * This method handles all middle-click actions
     
    19491970        }
    19501971
    1951         public static void delete(Item toDelete) {
     1972        public static void delete(Item toDelete) {             
    19521973                FrameUtils.setLastEdited(null);
    19531974                _offX = _offY = 0;
     
    20912112                        updateCursor();
    20922113                        ItemUtils.EnclosedCheck(current.getItems());
    2093                         if (toDelete.hasOverlay())
     2114                        if (toDelete.hasOverlay()){
    20942115                                FrameUtils.Parse(current, false);
     2116                                FrameGraphics.requestRefresh(false);
     2117                        }
    20952118                        FrameGraphics.Repaint();
    20962119                }
     
    26772700
    26782701                if (_controlDown) {
    2679                         _offX = 0;
    2680                         _offY = 0;
     2702                        //TODO why are these two lines needed?!?!
     2703                        //_offX = 0;
     2704                        //_offY = 0;
    26812705                } else {
    26822706                        resetOffset();
  • trunk/src/org/expeditee/io/DefaultFrameWriter.java

    r143 r145  
    7777                        _ItemTags.put("u", Item.class.getMethod("getHighlight", param));
    7878                        _ItemTags.put("e", Item.class.getMethod("getFillColor", param));
     79                        _ItemTags.put("E", Item.class.getMethod("getGradientColor", param));
     80                       
    7981                        _ItemTags.put("i", Item.class.getMethod("getFillPattern", param));
    8082                        _ItemTags.put("o", Item.class.getMethod("getOwner", param));
  • trunk/src/org/expeditee/io/FrameReader.java

    r108 r145  
    8383                        _ItemTags.put('u', Item.class.getMethod("setHighlight", pBool));
    8484                        _ItemTags.put('e', Item.class.getMethod("setFillColor", pColor));
     85                        _ItemTags.put('E', Item.class.getMethod("setGradientColor", pColor));
    8586                        _ItemTags.put('i', Item.class.getMethod("setFillPattern", pString));
    8687                        _ItemTags.put('o', Item.class.getMethod("setOwner", pString));
  • trunk/src/org/expeditee/items/Circle.java

    r143 r145  
    204204                invalidateCommonTrait(ItemAppearence.FillColor);
    205205        }
     206       
     207        @Override
     208        public void setGradientColor(Color c) {
     209                super.setGradientColor(c);
     210                invalidateCommonTrait(ItemAppearence.GradientColor);
     211        }
    206212
    207213        // @Override
  • trunk/src/org/expeditee/items/Item.java

    r143 r145  
    55import java.awt.Cursor;
    66import java.awt.Dimension;
     7import java.awt.GradientPaint;
    78import java.awt.Graphics2D;
    89import java.awt.Point;
     
    157158                dest.setTag(source.getTag());
    158159                dest.setFillColor(source.getFillColor());
     160                dest.setGradientColor(source.getGradientColor());
    159161                dest.setFillPattern(source.getFillPattern());
    160162
     
    254256        // A fill color of null represents transparent
    255257        private Color _colorFill = null;
     258
     259        // A gradient color of null represents NO gradient
     260        private Color _colorGradient = null;
    256261
    257262        // A fore color of null represents the default color
     
    946951                        if (isFloating()) {
    947952                                // TODO experiment with adding alpha when picking up filled
    948                                 // items...
    949                                 // Slows things down quite alot!!
     953                                // items... Slows things down quite alot!!
    950954                                fillColor = new Color(fillColor.getRed(), fillColor.getGreen(),
    951955                                                fillColor.getBlue());
    952956                        }
    953957                        g.setColor(fillColor);
    954                         // The painting is not efficient enough for gradients...
    955                         // Polygon s = getEnclosedShape();
    956                         // Rectangle b = s.getBounds();
    957                         // GradientPaint gp = new GradientPaint((int) (b.x + b.width * 0.3),
    958                         // b.y, getFillColor(), (int) (b.x + b.width * 1.3), b.y,
    959                         // Color.white);
    960                         // g.setPaint(gp);
    961                         // g.fillPolygon(s);
    962                         g.fillPolygon(getEnclosedShape());
     958                        Color gradientColor = getGradientColor();
     959                        if (gradientColor != null) {
     960                                // The painting is not efficient enough for gradients...
     961                                Polygon s = getEnclosedShape();
     962                                Rectangle b = s.getBounds();
     963                                GradientPaint gp = new GradientPaint(
     964                                                (int) (b.x + b.width * 0.3), b.y, fillColor,
     965                                                (int) (b.x + b.width * 1.3), b.y, gradientColor);
     966                                g.setPaint(gp);
     967                                g.fillPolygon(s);
     968                        } else {
     969                                g.fillPolygon(getEnclosedShape());
     970                        }
    963971                }
    964972        }
     
    12341242                invalidateCommonTrait(ItemAppearence.FillColor);
    12351243                invalidateFill();
     1244        }
     1245
     1246        public void setGradientColor(Color c) {
     1247                _colorGradient = c;
     1248
     1249                for (Line line : _lines) {
     1250                        Item other = line.getOppositeEnd(this);
     1251                        if (other.getGradientColor() != c)
     1252                                other.setGradientColor(c);
     1253                }
     1254
     1255                invalidateCommonTrait(ItemAppearence.GradientColor);
     1256                invalidateFill();
     1257        }
     1258
     1259        public Color getGradientColor() {
     1260                return _colorGradient;
    12361261        }
    12371262
     
    23192344                // will ID still
    23202345                // be -1 when saving a frame?
    2321                 //assert (i != null);
     2346                // assert (i != null);
    23222347                return !isVisible() || getID() < 0 || offScreenTopOrLeft();
    23232348        }
  • trunk/src/org/expeditee/items/ItemAppearence.java

    r122 r145  
    1919        Removed,
    2020        ToggleDashed,
    21         Thickness
     21        Thickness, GradientColor
    2222}
  • trunk/src/org/expeditee/items/Text.java

    r143 r145  
    17701770                if (!isAnnotation() || getLink() == null)
    17711771                        return false;
    1772                 return ItemUtils.startsWithTag(this, "@ao")
    1773                                 || ItemUtils.startsWithTag(this, "@v");
     1772                String text = getText().toLowerCase();
     1773                //TODO make it so can just check the _overlay variable
     1774                return text.startsWith("@o") || text.startsWith("@ao")
     1775                                || text.startsWith("@v");
    17741776        }
    17751777
  • trunk/src/org/expeditee/items/XRayable.java

    r124 r145  
    102102       
    103103        @Override
     104        public void setGradientColor(Color c) {
     105                _source.setGradientColor(c);
     106        }
     107       
     108        @Override
    104109        public float getThickness() {
    105110                return _source.getThickness();
Note: See TracChangeset for help on using the changeset viewer.