Changeset 3567

Show
Ignore:
Timestamp:
01/23/07 19:09:59 (2 years ago)
Author:
timothy
Message:

Makes the Web Interface look more like Colloquy with the sidebar look. Adds message counts in the sidebar, include highlight message counts. Also fixes the bug where multiple copies of the same message would be appeneded.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Plug-Ins/Web Interface/JVWebInterfacePlugin.m

    r3566 r3567  
    526526                [attributes setObject:[view uniqueIdentifier] forKey:@"panel"]; 
    527527                [attributes setObject:[[message date] description] forKey:@"received"]; 
     528                if( [message isHighlighted] ) [attributes setObject:@"yes" forKey:@"highlighted"]; 
    528529 
    529530                NSMutableDictionary *styleParams = [[[view display] styleParameters] mutableCopy]; 
     
    547548                        [body release]; 
    548549 
    549                         [self addElementToClientQueues:element]; 
     550                        NSXMLDocument *doc = [info objectForKey:@"activityQueue"]; 
     551                        [[doc rootElement] addChild:element]; 
    550552                } 
    551553 
     
    578580                        [body setStringValue:tmessage]; 
    579581 
    580                         NSXMLElement *element = [NSXMLElement elementWithName:@"message"]; 
     582                        NSXMLElement *element = [NSXMLElement elementWithName:@"event"]; 
    581583                        [element setAttributesAsDictionary:attributes]; 
    582584                        [element addChild:body]; 
    583585                        [body release]; 
    584586 
    585                         [self addElementToClientQueues:element]; 
     587                        NSXMLDocument *doc = [info objectForKey:@"activityQueue"]; 
     588                        [[doc rootElement] addChild:element]; 
    586589                } 
    587590 
  • trunk/Plug-Ins/Web Interface/Resources/base.css

    r3560 r3567  
    44        padding: 0; 
    55        margin: 0; 
    6 } 
    7  
    8 #timer { 
    9         color: lightgrey; 
    10         position: absolute; 
    11         top: 3px; 
    12         left: 20px; 
    13 } 
    14  
    15 #main { 
    16         position: absolute; 
    17         top: 20px; 
    18         left: 20px; 
    19         right: 20px; 
    20         bottom: 20px; 
    216        background-color: rgb( 235, 235, 235 ); 
    22         border-radius: 12px; 
    23         -moz-border-radius: 12px; 
    24         padding: 15px; 
    25 } 
    26  
    27 #drawer { 
    28         top: 15px; 
    29         right: 15px; 
    30         bottom: 15px; 
    31         position: absolute; 
    32         width: 175px; 
    33         margin-left: 4px; 
    34         overflow: auto; 
    357} 
    368 
     
    4113 
    4214#input { 
    43         border: 1px solid rgb( 145, 145, 145 ); 
     15        border-top: 1px solid rgb( 166, 166, 166 ); 
     16        border-left: 1px solid rgb( 166, 166, 166 ); 
    4417        background-color: white; 
    4518        padding: 3px; 
    46         left: 15px; 
    47         right: 200px
    48         bottom: 15px
     19        left: 200px; 
     20        right: 0
     21        bottom: 0
    4922        height: 30px; 
    5023        position: absolute; 
     
    5528 
    5629#panels { 
    57         top: 15px
    58         left: 15px; 
    59         right: 200px
    60         bottom: 52px; 
    61         position: absolute; 
    62         border: 1px solid rgb( 145, 145, 145 ); 
     30        top: 0
     31        left: 200px; 
     32        right: 0
     33        bottom: 37px; 
     34        position: absolute; 
     35        border-left: 1px solid rgb( 166, 166, 166 ); 
    6336        margin: 0; 
    6437        padding: 0; 
     
    7346} 
    7447 
    75 #panelList
     48#sidebar
    7649        list-style-type: none; 
     50        position: absolute; 
     51        top: 0; 
     52        left: 0; 
     53        bottom: 0; 
     54        width: 200px; 
     55        overflow: auto; 
     56        background-color: rgb( 227, 237, 249 ); 
    7757} 
    7858 
    7959.memberList { 
    8060        list-style-type: none; 
     61        padding-left: 16px; 
     62} 
     63 
     64.listItem { 
     65        position: relative; 
     66        height: 35px; 
     67        width: 100%; 
     68        -khtml-user-select: none; 
     69        -webkit-user-select: none; 
    8170} 
    8271 
    8372.listItem.member { 
    84         padding-left: 18px; 
    85 
    86  
    87 .listItem.member:before { 
    88         content: url( /resources/person.png ); 
    89 
    90  
    91 .listItem.member.server.operator:before { 
    92         content: url( /resources/admin.png ); 
    93 
    94  
    95 .listItem.member.operator:before { 
    96         content: url( /resources/op.png ); 
    97 
    98  
    99 .listItem.member.half.operator:before { 
    100         content: url( /resources/half-op.png ); 
    101 
    102  
    103 .listItem.member.voice:before { 
    104         content: url( /resources/voice.png ); 
    105 
    106  
    107 .listItem { 
    108         padding: 2px 5px 1px 5px; 
    109         border-radius: 6px; 
    110         -moz-border-radius: 6px; 
    111         cursor: default; 
    112         vertical-align: middle; 
    113         text-shadow: #eee 2px 2px 1px; 
    114         margin-right: 4px; 
    115 
    116  
    117 .listItem:before { 
    118         padding-right: 3px; 
    119         vertical-align: -3px; 
    120 
    121  
    122 .listItem:hover { 
    123         background-color: rgb( 250, 250, 250 ); 
     73        height: 18px; 
    12474} 
    12575 
    12676.listItem.selected { 
    127         background-color: rgb( 212, 212, 212 ); 
    128 
    129  
    130 .listItem.directChat:before { 
    131         content: url( /resources/privateChatTab.png ); 
    132 
    133  
    134 .listItem.directChat.newMessage:before { 
    135         content: url( /resources/privateChatTabNewMessage.png ); 
    136 
    137  
    138 .listItem.chatRoom:before { 
    139         content: url( /resources/roomTab.png ); 
    140 
    141  
    142 .listItem.chatRoom.newMessage:before { 
    143         content: url( /resources/roomTabNewMessage.png ); 
    144 
    145  
    146 .listItem.chatRoom.newHighlight:before { 
    147         content: url( /resources/roomTabNewHighlightMessage.png ); 
    148 
     77        background-position: bottom; 
     78        background-image: url( rowHighlight.png ); 
     79        background-repeat: repeat-x; 
     80
     81 
     82.listItem .icon { 
     83        position: absolute; 
     84        top: 1px; 
     85        left: 16px; 
     86        width: 32px; 
     87        height: 32px; 
     88        background-repeat: no-repeat; 
     89
     90 
     91.listItem .label { 
     92        position: absolute; 
     93        top: 4px; 
     94        left: 53px; 
     95        font-family: Lucida Grande, Helvetica, Verdana, sans-serif; 
     96        font-size: 11px; 
     97        color: black; 
     98
     99 
     100.listItem.selected .label { 
     101        font-weight: bold; 
     102        color: white; 
     103        text-shadow: rgba( 0, 0, 0, 0.2 ) 2px 2px 4px; 
     104
     105 
     106.listItem.selected .info { 
     107        font-weight: bold; 
     108        color: white; 
     109        text-shadow: rgba( 0, 0, 0, 0.2 ) 2px 2px 4px; 
     110
     111 
     112.listItem .info { 
     113        position: absolute; 
     114        top: 17px; 
     115        left: 53px; 
     116        font-family: Lucida Grande, Helvetica, Verdana, sans-serif; 
     117        font-size: 9px; 
     118        color: rgba( 0, 0, 0, 0.8 ); 
     119
     120 
     121.listItem.chatRoom .icon { 
     122        background-image: url( /resources/room.png ); 
     123
     124 
     125.listItem.directChat .icon { 
     126        background-image: url( /resources/messageUser.png ); 
     127
     128 
     129.listItem.member .icon { 
     130        top: 1px; 
     131        left: 16px; 
     132        width: 16px; 
     133        height: 16px; 
     134        background-image: url( /resources/person.png ); 
     135
     136 
     137.listItem.member .label { 
     138        top: 2px; 
     139        left: 38px; 
     140
     141 
     142.listItem.member.server.operator .icon { 
     143        background-image: url( /resources/admin.png ); 
     144
     145 
     146.listItem.member.operator .icon { 
     147        background-image: url( /resources/op.png ); 
     148
     149 
     150.listItem.member.half.operator .icon { 
     151        background-image: url( /resources/half-op.png ); 
     152
     153 
     154.listItem.member.voice .icon { 
     155        background-image: url( /resources/voice.png ); 
     156
     157 
     158.listItem .waiting { 
     159        position: absolute; 
     160        top: 10px; 
     161        right: 8px; 
     162        height: 14px; 
     163        color: white; 
     164        font-family: Helvetica, Verdana, sans-serif; 
     165        font-size: 11px; 
     166        font-weight: bold; 
     167        text-align: center; 
     168        line-height: 15px; 
     169
     170 
     171.listItem.selected .waiting { 
     172        color: rgb( 122, 137, 158 ); 
     173
     174 
     175.listItem .waiting .messages { 
     176        height: 14px; 
     177        background-repeat: no-repeat; 
     178        float: right; 
     179
     180 
     181.listItem .waiting .highlights { 
     182        height: 14px; 
     183        background-repeat: no-repeat; 
     184        float: left; 
     185        margin-right: -2px; 
     186
     187 
     188.listItem .waiting .messages.small { 
     189        width: 17px; 
     190        background-image: url( messagesNormalSmall.png ); 
     191
     192 
     193.listItem .waiting .messages.medium { 
     194        width: 26px; 
     195        background-image: url( messagesNormalMedium.png ); 
     196
     197 
     198.listItem .waiting .messages.large { 
     199        width: 33px; 
     200        background-image: url( messagesNormalLarge.png ); 
     201
     202 
     203.listItem.selected .waiting .messages.small { 
     204        background-image: url( messagesInvertedSmall.png ); 
     205
     206 
     207.listItem.selected .waiting .messages.medium { 
     208        background-image: url( messagesInvertedMedium.png ); 
     209
     210 
     211.listItem.selected .waiting .messages.large { 
     212        background-image: url( messagesInvertedLarge.png ); 
     213
     214 
     215.listItem .waiting .highlights.small { 
     216        width: 20px; 
     217        background-image: url( highlightsNormalSmall.png ); 
     218
     219 
     220.listItem .waiting .highlights.medium { 
     221        width: 25px; 
     222        background-image: url( highlightsNormalMedium.png ); 
     223
     224 
     225.listItem .waiting .highlights.large { 
     226        width: 31px; 
     227        background-image: url( highlightsNormalLarge.png ); 
     228
     229 
     230.listItem.selected .waiting .highlights.small { 
     231        background-image: url( highlightsInvertedSmall.png ); 
     232
     233 
     234.listItem.selected .waiting .highlights.medium { 
     235        background-image: url( highlightsInvertedMedium.png ); 
     236
     237 
     238.listItem.selected .waiting .highlights.large { 
     239        background-image: url( highlightsInvertedLarge.png ); 
     240
  • trunk/Plug-Ins/Web Interface/Resources/common.js

    r3566 r3567  
    6666                                                        var panel = ChatController.panel( message.getAttribute( "panel" ) ); 
    6767                                                        panel.appendMessage( message.firstChild.nodeValue ); 
    68                                                         panel.updateNewMessageCount( panel.newMessages + 1 ); 
     68                                                        if( ( ( ! foreground && panel.active ) || ! panel.active ) ) { 
     69                                                                panel.updateNewMessageCount( panel.newMessages + 1 ); 
     70                                                                if( message.getAttribute( "highlighted" ) ) 
     71                                                                        panel.updateHighlightMessageCount( panel.newHighlightMessages + 1 ); 
     72                                                        } 
    6973                                                } 
    7074                                                break; 
     
    9195                                if( activityCheckInterval ) clearInterval( activityCheckInterval ); 
    9296                                activityCheckInterval = setInterval( ChatController.checkActivity, currentActivityCheckInterval ); 
    93  
    94                                 $("timer").innerText = currentActivityCheckInterval / 1000 + " secs"; 
    9597                        } 
    9698                }, 
     
    117119        this.listItem.className = "listItem"; 
    118120        this.listItem.addEventListener( "click", function( event ) { panel.show(); }, false ); 
    119         this.listItem.appendChild( document.createTextNode( this.name ) ); 
     121 
     122        var iconElement = $(document.createElement( "div" )); 
     123        iconElement.className = "icon"; 
     124        this.listItem.appendChild( iconElement ); 
     125 
     126        this.labelElement = $(document.createElement( "div" )); 
     127        this.labelElement.className = "label"; 
     128        this.labelElement.appendChild( document.createTextNode( this.name ) ); 
     129        this.listItem.appendChild( this.labelElement ); 
     130 
     131        this.infoLabelElement = $(document.createElement( "div" )); 
     132        this.infoLabelElement.className = "info"; 
     133        this.infoLabelElement.appendChild( document.createTextNode( this.server ) ); 
     134        this.listItem.appendChild( this.infoLabelElement ); 
     135 
     136        var waitingElement = $(document.createElement( "div" )); 
     137        waitingElement.className = "waiting"; 
     138 
     139        this.highlightsElement = $(document.createElement( "div" )); 
     140        this.highlightsElement.className = "highlights"; 
     141        waitingElement.appendChild( this.highlightsElement ); 
     142 
     143        this.messagesElement = $(document.createElement( "div" )); 
     144        this.messagesElement.className = "messages"; 
     145        waitingElement.appendChild( this.messagesElement ); 
     146 
     147        this.listItem.appendChild( waitingElement ); 
    120148 
    121149        this.frame = $(document.createElement( "iframe" )); 
     
    126154 
    127155        ChatController.panels.push( this ); 
    128         $("panelList").appendChild( this.listItem ); 
     156        $("sidebar").appendChild( this.listItem ); 
    129157        $("panels").appendChild( this.frame ); 
    130158 
     
    261289 
    262290DirectChatPanel.prototype.updateNewMessageCount = function( messages ) { 
    263         if( ( ( ! foreground && this.active ) || ! this.active ) ) { 
    264                 if( ! this.listItem.hasClassName( "newMessage" ) ) 
    265                         this.listItem.addClassName( "newMessage" ); 
    266                 this.newMessages = messages; 
    267                 this.listItem.title = messages + " messages waiting"; 
    268         } 
     291        this.newMessages = messages; 
     292 
     293        if( messages == 0 ) this.listItem.title = "No messages waiting"; 
     294        else if( messages == 1 ) this.listItem.title = "1 message waiting"; 
     295        else this.listItem.title = messages + " messages waiting"; 
     296 
     297        this.messagesElement.removeClassName( "small" ); 
     298        this.messagesElement.removeClassName( "medium" ); 
     299        this.messagesElement.removeClassName( "large" ); 
     300 
     301        if( messages > 0 && messages <= 9 ) { 
     302                if( ! this.messagesElement.hasClassName( "small" ) ) 
     303                        this.messagesElement.addClassName( "small" ); 
     304        } else if( messages >= 10 && messages <= 99 ) { 
     305                if( ! this.messagesElement.hasClassName( "medium" ) ) 
     306                        this.messagesElement.addClassName( "medium" ); 
     307        } else if( messages >= 100 ) { 
     308                if( ! this.messagesElement.hasClassName( "large" ) ) 
     309                        this.messagesElement.addClassName( "large" ); 
     310        } 
     311 
     312        this.messagesElement.innerText = ( messages > 0 ? messages : "" ); 
    269313} 
    270314 
    271315DirectChatPanel.prototype.updateHighlightMessageCount = function( messages ) { 
    272         if( ( ( ! foreground && this.active ) || ! this.active ) ) { 
    273                 if( ! this.listItem.hasClassName( "newHighlight" ) ) 
    274                         this.listItem.addClassName( "newHighlight" ); 
    275                 this.newHighlightMessages = messages; 
    276         } 
     316        this.newHighlightMessages = messages; 
     317 
     318        this.highlightsElement.removeClassName( "small" ); 
     319        this.highlightsElement.removeClassName( "medium" ); 
     320        this.highlightsElement.removeClassName( "large" ); 
     321 
     322        if( messages > 0 && messages <= 9 ) { 
     323                if( ! this.highlightsElement.hasClassName( "small" ) ) 
     324                        this.highlightsElement.addClassName( "small" ); 
     325        } else if( messages >= 10 && messages <= 99 ) { 
     326                if( ! this.highlightsElement.hasClassName( "medium" ) ) 
     327                        this.highlightsElement.addClassName( "medium" ); 
     328        } else if( messages >= 100 ) { 
     329                if( ! this.highlightsElement.hasClassName( "large" ) ) 
     330                        this.highlightsElement.addClassName( "large" ); 
     331        } 
     332 
     333        this.highlightsElement.innerText = ( messages > 0 ? messages : "" ); 
    277334} 
    278335 
    279336DirectChatPanel.prototype.focused = function() { 
    280         this.newMessages = 0; 
    281         this.newHighlightMessages = 0; 
    282         this.listItem.removeClassName( "newMessage" ); 
    283         this.listItem.removeClassName( "newHighlight" ); 
    284         this.listItem.title = "No messages waiting"; 
     337        this.updateNewMessageCount( 0 ); 
     338        this.updateHighlightMessageCount( 0 ); 
    285339} 
    286340 
     
    298352        this.memberList.className = "memberList"; 
    299353        this.memberList.style.setProperty( "display", "none", "" ); 
    300         $("panelList").appendChild( this.memberList ); 
     354        $("sidebar").appendChild( this.memberList ); 
    301355 
    302356        var memberNodes = node.childNodes; 
     
    318372                member.listItem.title = member.hostmask; 
    319373                member.listItem.className = "listItem member" + ( member.type ? " " + member.type : "" ); 
    320                 member.listItem.appendChild( document.createTextNode( member.name ) ); 
     374 
     375                var iconElement = $(document.createElement( "div" )); 
     376                iconElement.className = "icon"; 
     377                member.listItem.appendChild( iconElement ); 
     378 
     379                member.labelElement = $(document.createElement( "div" )); 
     380                member.labelElement.className = "label"; 
     381                member.labelElement.appendChild( document.createTextNode( member.name ) ); 
     382                member.listItem.appendChild( member.labelElement ); 
    321383 
    322384                this.memberList.appendChild( member.listItem ); 
  • trunk/Plug-Ins/Web Interface/Resources/index.html

    r3560 r3567  
    1414</head> 
    1515<body> 
    16 <div id="main"> 
    1716<div id="panels"></div> 
    1817<div id="input" contenteditable="true"></div> 
    19 <div id="drawer" onselectstart="return false"><ul id="panelList"></ul></div> 
    20 </div> 
    21 <div id="timer">4 secs</div> 
     18<ul id="sidebar"></ul> 
    2219</body> 
    2320</html> 
  • trunk/Plug-Ins/Web Interface/Web Interface.xcodeproj/project.pbxproj

    r3560 r3567  
    2525                1CC7250C0901A775004651F8 /* index.html in Resources */ = {isa = PBXBuildFile; fileRef = 1CC7250B0901A775004651F8 /* index.html */; }; 
    2626                1CC726710901BBD2004651F8 /* common.js in Resources */ = {isa = PBXBuildFile; fileRef = 1CC7265F0901BAAE004651F8 /* common.js */; }; 
     27                1CD02E490B66C75400957AF0 /* highlightsInvertedLarge.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CD02E3C0B66C75400957AF0 /* highlightsInvertedLarge.png */; }; 
     28                1CD02E4A0B66C75400957AF0 /* highlightsInvertedMedium.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CD02E3D0B66C75400957AF0 /* highlightsInvertedMedium.png */; }; 
     29                1CD02E4B0B66C75400957AF0 /* highlightsInvertedSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CD02E3E0B66C75400957AF0 /* highlightsInvertedSmall.png */; }; 
     30                1CD02E4C0B66C75400957AF0 /* highlightsNormalLarge.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CD02E3F0B66C75400957AF0 /* highlightsNormalLarge.png */; }; 
     31                1CD02E4D0B66C75400957AF0 /* highlightsNormalMedium.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CD02E400B66C75400957AF0 /* highlightsNormalMedium.png */; }; 
     32                1CD02E4E0B66C75400957AF0 /* highlightsNormalSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CD02E410B66C75400957AF0 /* highlightsNormalSmall.png */; }; 
     33                1CD02E4F0B66C75400957AF0 /* messagesInvertedLarge.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CD02E420B66C75400957AF0 /* messagesInvertedLarge.png */; }; 
     34                1CD02E500B66C75400957AF0 /* messagesInvertedMedium.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CD02E430B66C75400957AF0 /* messagesInvertedMedium.png */; }; 
     35                1CD02E510B66C75400957AF0 /* messagesInvertedSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CD02E440B66C75400957AF0 /* messagesInvertedSmall.png */; }; 
     36                1CD02E520B66C75400957AF0 /* messagesNormalLarge.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CD02E450B66C75400957AF0 /* messagesNormalLarge.png */; }; 
     37                1CD02E530B66C75400957AF0 /* messagesNormalMedium.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CD02E460B66C75400957AF0 /* messagesNormalMedium.png */; }; 
     38                1CD02E540B66C75400957AF0 /* messagesNormalSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CD02E470B66C75400957AF0 /* messagesNormalSmall.png */; }; 
     39                1CD02E550B66C75400957AF0 /* rowHighlight.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CD02E480B66C75400957AF0 /* rowHighlight.png */; }; 
    2740                1CF3AE700B5B05B100183925 /* smallIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CF3AE6F0B5B05B100183925 /* smallIcon.png */; }; 
    2841                8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */; }; 
     
    5366                1CC7250B0901A775004651F8 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = "<group>"; }; 
    5467                1CC7265F0901BAAE004651F8 /* common.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = common.js; sourceTree = "<group>"; }; 
     68                1CD02E3C0B66C75400957AF0 /* highlightsInvertedLarge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = highlightsInvertedLarge.png; sourceTree = "<group>"; }; 
     69                1CD02E3D0B66C75400957AF0 /* highlightsInvertedMedium.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = highlightsInvertedMedium.png; sourceTree = "<group>"; }; 
     70                1CD02E3E0B66C75400957AF0 /* highlightsInvertedSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = highlightsInvertedSmall.png; sourceTree = "<group>"; }; 
     71                1CD02E3F0B66C75400957AF0 /* highlightsNormalLarge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = highlightsNormalLarge.png; sourceTree = "<group>"; }; 
     72                1CD02E400B66C75400957AF0 /* highlightsNormalMedium.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = highlightsNormalMedium.png; sourceTree = "<group>"; }; 
     73                1CD02E410B66C75400957AF0 /* highlightsNormalSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = highlightsNormalSmall.png; sourceTree = "<group>"; }; 
     74                1CD02E420B66C75400957AF0 /* messagesInvertedLarge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = messagesInvertedLarge.png; sourceTree = "<group>"; }; 
     75                1CD02E430B66C75400957AF0 /* messagesInvertedMedium.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = messagesInvertedMedium.png; sourceTree = "<group>"; }; 
     76                1CD02E440B66C75400957AF0 /* messagesInvertedSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = messagesInvertedSmall.png; sourceTree = "<group>"; }; 
     77                1CD02E450B66C75400957AF0 /* messagesNormalLarge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = messagesNormalLarge.png; sourceTree = "<group>"; }; 
     78                1CD02E460B66C75400957AF0 /* messagesNormalMedium.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = messagesNormalMedium.png; sourceTree = "<group>"; }; 
     79                1CD02E470B66C75400957AF0 /* messagesNormalSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = messagesNormalSmall.png; sourceTree = "<group>"; }; 
     80                1CD02E480B66C75400957AF0 /* rowHighlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = rowHighlight.png; sourceTree = "<group>"; }; 
    5581                1CF3AE6F0B5B05B100183925 /* smallIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = smallIcon.png; sourceTree = "<group>"; }; 
    5682                8D5B49B6048680CD000E48DA /* Web Interface.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Web Interface.plugin"; sourceTree = BUILT_PRODUCTS_DIR; }; 
     
    102128                                1C7F7CC70B5FF71000D8676C /* utilities.js */, 
    103129                                1CF3AE6F0B5B05B100183925 /* smallIcon.png */, 
     130                                1CD02E3C0B66C75400957AF0 /* highlightsInvertedLarge.png */, 
     131                                1CD02E3D0B66C75400957AF0 /* highlightsInvertedMedium.png */, 
     132                                1CD02E3E0B66C75400957AF0 /* highlightsInvertedSmall.png */, 
     133                                1CD02E3F0B66C75400957AF0 /* highlightsNormalLarge.png */, 
     134                                1CD02E400B66C75400957AF0 /* highlightsNormalMedium.png */, 
     135                                1CD02E410B66C75400957AF0 /* highlightsNormalSmall.png */, 
     136                                1CD02E420B66C75400957AF0 /* messagesInvertedLarge.png */, 
     137                                1CD02E430B66C75400957AF0 /* messagesInvertedMedium.png */, 
     138                                1CD02E440B66C75400957AF0 /* messagesInvertedSmall.png */, 
     139                                1CD02E450B66C75400957AF0 /* messagesNormalLarge.png */, 
     140                                1CD02E460B66C75400957AF0 /* messagesNormalMedium.png */, 
     141                                1CD02E470B66C75400957AF0 /* messagesNormalSmall.png */, 
     142                                1CD02E480B66C75400957AF0 /* rowHighlight.png */, 
    104143                        ); 
    105144                        path = Resources; 
     
    223262                                1C3458F20905FC4F00AC2C16 /* base.css in Resources */, 
    224263                                1CF3AE700B5B05B100183925 /* smallIcon.png in Resources */, 
     264                                1CD02E490B66C75400957AF0 /* highlightsInvertedLarge.png in Resources */, 
     265                                1CD02E4A0B66C75400957AF0 /* highlightsInvertedMedium.png in Resources */, 
     266                                1CD02E4B0B66C75400957AF0 /* highlightsInvertedSmall.png in Resources */, 
     267                                1CD02E4C0B66C75400957AF0 /* highlightsNormalLarge.png in Resources */, 
     268                                1CD02E4D0B66C75400957AF0 /* highlightsNormalMedium.png in Resources */, 
     269                                1CD02E4E0B66C75400957AF0 /* highlightsNormalSmall.png in Resources */, 
     270                                1CD02E4F0B66C75400957AF0 /* messagesInvertedLarge.png in Resources */, 
     271                                1CD02E500B66C75400957AF0 /* messagesInvertedMedium.png in Resources */, 
     272                                1CD02E510B66C75400957AF0 /* messagesInvertedSmall.png in Resources */, 
     273                                1CD02E520B66C75400957AF0 /* messagesNormalLarge.png in Resources */, 
     274                                1CD02E530B66C75400957AF0 /* messagesNormalMedium.png in Resources */, 
     275                                1CD02E540B66C75400957AF0 /* messagesNormalSmall.png in Resources */, 
     276                                1CD02E550B66C75400957AF0 /* rowHighlight.png in Resources */, 
    225277                        ); 
    226278                        runOnlyForDeploymentPostprocessing = 0;