Class: Redcar::ApplicationSWT

Inherits:
Object
  • Object
show all
Includes:
Controller
Defined in:
plugins/application_swt/lib/application_swt.rb,
plugins/application_swt/lib/application_swt/tab.rb,
plugins/application_swt/lib/application_swt/icon.rb,
plugins/application_swt/lib/application_swt/menu.rb,
plugins/application_swt/lib/application_swt/window.rb,
plugins/application_swt/lib/application_swt/toolbar.rb,
plugins/application_swt/lib/application_swt/speedbar.rb,
plugins/application_swt/lib/application_swt/notebook.rb,
plugins/application_swt/lib/application_swt/gradient.rb,
plugins/application_swt/lib/application_swt/treebook.rb,
plugins/application_swt/lib/application_swt/html_tab.rb,
plugins/application_swt/lib/application_swt/clipboard.rb,
plugins/application_swt/lib/application_swt/dialog_adapter.rb,
plugins/application_swt/lib/application_swt/bring_to_front.rb,
plugins/application_swt/lib/application_swt/listener_helpers.rb,
plugins/application_swt/lib/application_swt/speedbar/combo_item.rb,
plugins/application_swt/lib/application_swt/speedbar/label_item.rb,
plugins/application_swt/lib/application_swt/speedbar/toggle_item.rb,
plugins/application_swt/lib/application_swt/dialogs/input_dialog.rb,
plugins/application_swt/lib/application_swt/speedbar/slider_item.rb,
plugins/application_swt/lib/application_swt/speedbar/button_item.rb,
plugins/application_swt/lib/application_swt/notebook/tab_transfer.rb,
plugins/application_swt/lib/application_swt/speedbar/text_box_item.rb,
plugins/application_swt/lib/application_swt/dialogs/modeless_dialog.rb,
plugins/application_swt/lib/application_swt/menu/binding_translator.rb,
plugins/application_swt/lib/application_swt/dialogs/no_buttons_dialog.rb,
plugins/application_swt/lib/application_swt/toolbar/binding_translator.rb,
plugins/application_swt/lib/application_swt/dialogs/modeless_html_dialog.rb,
plugins/application_swt/lib/application_swt/dialogs/text_and_file_dialog.rb,
plugins/application_swt/lib/application_swt/notebook/tab_drag_and_drop_listener.rb,
plugins/application_swt/lib/application_swt/dialogs/filter_list_dialog_controller.rb,
plugins/application_swt/lib/application_swt/dialogs/modeless_list_dialog_controller.rb

Defined Under Namespace

Modules: Dialogs, Icon, ListenerHelpers Classes: Clipboard, CocoaUIListener, DialogAdapter, FakeWindow, FilterListDialogController, Gradient, HtmlTab, Menu, ModelessDialog, ModelessHtmlDialog, ModelessListDialogController, Notebook, ShellListener, Speedbar, Tab, ToolBar, Treebook, Window

Constant Summary

DEFAULT_TREE_FONT_SIZES =
{
  :osx     => 12,
  :windows => 10,
  :linux   => 12
}

Instance Attribute Summary (collapse)

Attributes included from Controller

#model

Class Method Summary (collapse)

Instance Method Summary (collapse)

Methods included from Controller

included

Constructor Details

- (ApplicationSWT) initialize(model)

A new instance of ApplicationSWT



136
137
138
139
140
141
142
# File 'plugins/application_swt/lib/application_swt.rb', line 136

def initialize(model)
  @model = model
  add_listeners
  add_swt_listeners
  create_clipboard
  create_fake_window
end

Instance Attribute Details

- (Object) fake_shell (readonly)

Returns the value of attribute fake_shell



36
37
38
# File 'plugins/application_swt/lib/application_swt.rb', line 36

def fake_shell
  @fake_shell
end

Class Method Details

+ (Object) add_debug_key_filters



87
88
89
90
91
92
93
94
# File 'plugins/application_swt/lib/application_swt.rb', line 87

def self.add_debug_key_filters
  display.add_filter(Swt::SWT::KeyDown) do |a|
    puts "type: #{a.type}, keyCode: #{a.keyCode}, character: #{a.character}, statemask: #{a.stateMask}"
  end
  display.add_filter(Swt::SWT::KeyUp) do |a|
    puts "type: #{a.type}, keyCode: #{a.keyCode}, character: #{a.character}, statemask: #{a.stateMask}"
  end
end

+ (Object) display



38
39
40
# File 'plugins/application_swt/lib/application_swt.rb', line 38

def self.display
  @display ||= Swt.display
end

+ (Object) gui



96
97
98
# File 'plugins/application_swt/lib/application_swt.rb', line 96

def self.gui
  Redcar.gui
end

+ (Object) register_dialog(shell, dialog)



128
129
130
# File 'plugins/application_swt/lib/application_swt.rb', line 128

def self.register_dialog(shell, dialog)
  shell_dialogs[shell] = dialog
end

+ (Object) register_shell(shell)

ALL new shells must be registered here, otherwise Redcar will get confused about when it has lost the application focus.



120
121
122
# File 'plugins/application_swt/lib/application_swt.rb', line 120

def self.register_shell(shell)
  shell.add_shell_listener(ShellListener.new)
end

+ (Object) selected_tab_background



54
55
56
# File 'plugins/application_swt/lib/application_swt.rb', line 54

def self.selected_tab_background
  Gradient.new(Redcar::ApplicationSWT.storage['selected_tab_background'])
end

+ (Object) shell_dialogs



124
125
126
# File 'plugins/application_swt/lib/application_swt.rb', line 124

def self.shell_dialogs
  @shell_dialogs ||= {}
end

+ (Object) start_with_app



42
43
44
45
46
47
48
49
50
51
52
# File 'plugins/application_swt/lib/application_swt.rb', line 42

def self.start_with_app
  if Redcar.gui
    Redcar.gui.register_controllers(
        Redcar::Tab                => ApplicationSWT::Tab,
        Redcar::HtmlTab            => ApplicationSWT::HtmlTab,
        Redcar::FilterListDialog   => ApplicationSWT::FilterListDialogController,
        Redcar::ModelessListDialog => ApplicationSWT::ModelessListDialogController
      )
    Redcar.gui.register_dialog_adapter(ApplicationSWT::DialogAdapter.new)
  end
end

+ (Object) storage



76
77
78
79
80
81
82
83
84
85
# File 'plugins/application_swt/lib/application_swt.rb', line 76

def self.storage
  @storage ||= begin
    storage = Plugin::Storage.new('application_swt')
    storage.set_default('selected_tab_background', {0 => "#FEFEFE", 100 => "#EEEEEE"})
    storage.set_default('unselected_tab_background', {0 => "#E5E5E5", 100 => "#D0D0D0"})
    storage.set_default('tree_background', "#FFFFFF")
    storage.set_default('tree_font_size', DEFAULT_TREE_FONT_SIZES[Redcar.platform])
    storage
  end
end

+ (Object) tree_background



62
63
64
# File 'plugins/application_swt/lib/application_swt.rb', line 62

def self.tree_background
  Gradient.new(Redcar::ApplicationSWT.storage['tree_background'])
end

+ (Object) tree_font_size



66
67
68
# File 'plugins/application_swt/lib/application_swt.rb', line 66

def self.tree_font_size
  Redcar::ApplicationSWT.storage['tree_font_size']
end

+ (Object) unregister_dialog(dialog)



132
133
134
# File 'plugins/application_swt/lib/application_swt.rb', line 132

def self.unregister_dialog(dialog)
  shell_dialogs.delete(shell_dialogs.invert[dialog])
end

+ (Object) unselected_tab_background



58
59
60
# File 'plugins/application_swt/lib/application_swt.rb', line 58

def self.unselected_tab_background
  Gradient.new(Redcar::ApplicationSWT.storage['unselected_tab_background'])
end

Instance Method Details

- (Object) add_listeners



178
179
180
181
# File 'plugins/application_swt/lib/application_swt.rb', line 178

def add_listeners
  @model.add_listener(:new_window, &method(:new_window))
  @model.add_listener(:refresh_menu, &method(:refresh_menu))
end

- (Object) add_swt_listeners



205
206
207
208
209
210
211
212
213
214
215
# File 'plugins/application_swt/lib/application_swt.rb', line 205

def add_swt_listeners
  if Redcar.platform == :osx
    enhancer = com.redcareditor.application_swt.CocoaUIEnhancer.new("Redcar")
    enhancer.hook_application_menu(
      ApplicationSWT.display,
      CocoaUIListener.new(:quit),
      CocoaUIListener.new(:about),
      CocoaUIListener.new(:prefs)
    )
  end
end

- (Object) create_clipboard



217
218
219
# File 'plugins/application_swt/lib/application_swt.rb', line 217

def create_clipboard
  ApplicationSWT::Clipboard.new(@model.clipboard)
end

- (Object) create_fake_window



148
149
150
151
152
153
# File 'plugins/application_swt/lib/application_swt.rb', line 148

def create_fake_window
  @fake_shell = Swt::Widgets::Shell.new(ApplicationSWT.display, Swt::SWT::NO_TRIM)
  @fake_shell.open
  @fake_shell.set_size(0, 0)
  @fake_shell.set_visible(false) unless Redcar.platform == :osx
end


225
226
227
# File 'plugins/application_swt/lib/application_swt.rb', line 225

def menu_changed
  Menu.new(self, @model.menu)
end

- (Object) new_window(win)



221
222
223
# File 'plugins/application_swt/lib/application_swt.rb', line 221

def new_window(win)
  win.controller = ApplicationSWT::Window.new(win)
end

- (Object) refresh_menu



163
164
165
166
167
168
169
170
# File 'plugins/application_swt/lib/application_swt.rb', line 163

def refresh_menu
  if Redcar.platform == :osx and @fake_shell
    old_menu_bar = @fake_shell.menu_bar
    fake_menu_controller = ApplicationSWT::Menu.new(FakeWindow.new(@fake_shell), Redcar.app.main_menu, Redcar.app.main_keymap, Swt::SWT::BAR)
    fake_shell.menu_bar = fake_menu_controller.menu_bar
    old_menu_bar.dispose if old_menu_bar
  end
end

- (Object) refresh_toolbar



172
173
174
175
176
# File 'plugins/application_swt/lib/application_swt.rb', line 172

def refresh_toolbar
  # if Redcar.platform == :osx and @fake_shell
  #   fake_toolbar_controller = ApplicationSWT::ToolBar.new(FakeWindow.new(@fake_shell), Redcar.app.main_toolbar, Swt::SWT::FLAT)
  # end
end