" Author: Daniel Leong
"
" License: {{{
"
" Copyright (C) 2014 Eric Van Dewoestine
"
" This program is free software: you can redistribute it and/or modify
" it under the terms of the GNU General Public License as published by
" the Free Software Foundation, either version 3 of the License, or
" (at your option) any later version.
"
" This program is distributed in the hope that it will be useful,
" but WITHOUT ANY WARRANTY; without even the implied warranty of
" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
" GNU General Public License for more details.
"
" You should have received a copy of the GNU General Public License
" along with this program. If not, see .
"
" }}}
" Script Varables {{{
let s:command_new = '-command java_new -p "" -t "" -n ""'
let s:java_types = ['class', 'abstract', 'interface', 'enum', '@interface']
" }}}
function! eclim#java#new#Create(type, name) " {{{
" Create a new Java Type
if !eclim#project#util#IsCurrentFileInProject(0)
return
endif
let project = eclim#project#util#GetCurrentProjectName()
" strip off .java suffix if supplied.
let newName = a:name
if newName =~? '\.java$'
let newName = substitute(newName, '\.java$', '', '')
endif
" prepend current package if necessary
let myPackage = eclim#java#util#GetPackage()
if newName !~ '\.' && len(myPackage) > 0
let newName = myPackage . '.' . newName
endif
let command = s:command_new
let command = substitute(command, "", project, '')
let command = substitute(command, "", a:type, '')
let command = substitute(command, "", newName, '')
let result = eclim#Execute(command)
if type(result) == g:LIST_TYPE
let answer = eclim#util#PromptList(
\ "Please choose the src directory to create this new package in",
\ result)
if answer == -1
return
endif
let path = eclim#Execute(command . ' -r "' . result[answer] . '"')
if type(path) != g:STRING_TYPE
return
endif
elseif type(result) == g:STRING_TYPE
let path = result
else
return
endif
call eclim#util#GoToBufferWindowOrOpen(path, g:EclimJavaNewOpenAction)
endfunction " }}}
function! eclim#java#new#CommandComplete(argLead, cmdLine, cursorPos) " {{{
let cmdLine = strpart(a:cmdLine, 0, a:cursorPos)
let args = eclim#util#ParseCmdLine(cmdLine)
if len(args) < 2 || (len(args) == 2 && cmdLine !~ '\s$')
" Suggest java types
let arg = substitute(a:argLead, '@', '\\@', '')
return filter(copy(s:java_types), 'v:val =~ "^' . arg . '"')
endif
if len(a:argLead) <= 3 || a:argLead =~ '\.'
" Propose packages
return eclim#java#util#CommandCompletePackage(
\ a:argLead, a:cmdLine, a:cursorPos)
endif
return []
endfunction " }}}
" vim:ft=vim:fdm=marker